dubbo学习(四)配置dubbo 注解方式配置
provider(生产者)
service注解暴露服务
/**
* 用户管理实现类
*/
@Service //用的dubbo的注解,表明这是一个分布式服务
@Component //注册为spring bean
public class UserServiceImpl implements UserService { @Autowired
private UserMapper userMapper; @Override
public List<UserVO> listUser() {
List<UserVO> result = new ArrayList<>();
List<User> list = userMapper.listUser();
for (User user : list) {
UserVO vo = new UserVO();
BeanUtils.copyProperties(user, vo);
result.add(vo);
}
return result;
}
}
PS:@Service注解很容易用错,目前有两个包有@Service注解:
com.alibaba.dubbo.config.annotation.Service:用于标注对外暴露的dubbo接口实现类。
org.springframework.stereotype.Service:用于标注根据业务块分离的Service的实现类,对应的是业务层(如一个dubbo方法可能调用多个业务块的service,这些service的实现类就用Spring的注解)。
PS:若使用的是dubbo的Service注解时,在controller注入的时候,要选择@Reference注解来进行注入。
dubbo配置
在SpringBoot的配置文件application.yml中配置dubbo信息
dubbo:
application:
name: user-service
registry:
address: zookeeper://127.0.0.1:2181
protocol:
port: 20880
name: dubbo
启动类配置
@SpringBootApplication
@EnableDubbo
@MapperScan(basePackages = "zhbf.user.mapper")//配置mapper扫描的路径(Mybatis的mapper接口)
public class UserBootStarter { public static void main(String[] args) {
SpringApplication.run(UserBootStarter.class, args);
System.out.println("==========USER模块启动完成!==========");
} }
@Configuration:启动类注解。@SpringBootApplication = (默认属性)@Configuration + @EnableAutoConfiguration + @ComponentScan。
@EnableDubbo:开启注解Dubbo功能 ,其中可以加入scanBasePackages属性配置包扫描的路径,用于扫描并注册bean
@MapperScan:指定mybatis的mapper接口存放路径,用于扫描mapper接口并注册
consumer(消费者)
Reference
注解引用服务
/**
* 用户管理Controller
*/
@RestController
@RequestMapping(value = "/userManage")
public class UserManageController { @Reference
private UserService userService; /**
* 查询用户集合
* @return
*/
@RequestMapping("queryListUser")
public String queryListUser() {
List<UserVO> list = userService.listUser();
return list.toString();
}
}
@Component:(把普通pojo实例化到spring容器中,相当于配置文件中的 <bean id="" class=""/>) 泛指各种组件,当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类。
例:<context:component-scan base-package=”com.*”>
上面的这个例子是引入Component组件的例子,其中base-package表示为需要扫描的所有子包。
@Reference:与@Autowired、@Resource注解功能类似,用于依赖注入,一般注入的是分布式的远程服务的对象,需要dubbo配置使用
dubbo配置
在SpringBoot的配置文件application.yml中配置dubbo信息(这里以application.properties举例)
# dubbo配置
dubbo.application.name=web-service
dubbo.registry.address=zookeeper://127.0.0.1:2181
启动类配置
@SpringBootApplication
@EnableDubbo
public class WebBootStarter { public static void main(String[] args) {
SpringApplication.run(WebBootStarter.class, args);
System.out.println("==========WEB模块启动完成!==========");
} }
PS:@ComponentScan主要就是定义扫描的路径从中找出标识了需要装配的类自动装配到spring的bean容器中。
调用服务
http://localhost:8081/userManage/queryListUser
dubbo学习(四)配置dubbo 注解方式配置的更多相关文章
- 跟着刚哥学习Spring框架--通过注解方式配置Bean(四)
组件扫描:Spring能够从classpath下自动扫描,侦测和实例化具有特定注解的组件. 特定组件包括: 1.@Component:基本注解,识别一个受Spring管理的组件 2.@Resposit ...
- 跟着刚哥学习Spring框架--通过XML方式配置Bean(三)
Spring配置Bean有两种形式(XML和注解) 今天我们学习通过XML方式配置Bean 1. Bean的配置方式 通过全类名(反射)的方式 √ id:标识容器中的bean.id唯一. √ cl ...
- spring学习笔记 星球日two - 注解方式配置bean
注解要放在要注解的对象的上方 @Autowired private Category category; <?xml version="1.0" encoding=" ...
- Spring框架学习(6)使用ioc注解方式配置bean
内容源自:使用ioc注解方式配置bean context层 : 上下文环境/容器环境 applicationContext.xml 1 ioc注解功能 注解 简化xml文件配置 如 hibernate ...
- Hibernate 注解方式配置
在Hibernate3之后就可以使用注解的方式去配置.而且在工作中我们使用的更多的也是注解方式去配置项目,所以还有一部分使用配置文件去配置的一些关系就不在此去一一举例,需要了解的朋友可以去查看Hibe ...
- atitit.ajax bp dwr 3.的注解方式配置使用流程总结 VO9o.....
atitit.ajax bp dwr 3.的注解方式配置使用流程总结 VO9o..... 1. 安装配置 1 1.1. 下载 dwr.jar 1M 1 1.2. 配置注解方式..web.xml 1 ...
- atitit.ajax bp dwr 3.的注解方式配置使用流程总结.....
atitit.ajax bp dwr 3.的注解方式配置使用流程总结..... 1. 下载 dwr.jar 1M 1 2. 配置注解方式..web.xml 1 3. Class 配置 2 4. 测试 ...
- SSH深度历险(十) AOP原理及相关概念学习+AspectJ注解方式配置spring AOP
AOP(Aspect Oriented Programming),是面向切面编程的技术.AOP基于IoC基础,是对OOP的有益补充. AOP之所以能得到广泛应用,主要是因为它将应用系统拆分分了2个部分 ...
- Spring Aop实例@Aspect、@Before、@AfterReturning@Around 注解方式配置
用过spring框架进行开发的人,多多少少会使用过它的AOP功能,都知道有@Before.@Around和@After等advice.最近,为了实现项目中的输出日志和权限控制这两个需求,我也使用到了A ...
- SpringMVC的注解方式配置
SpringMVC支持使用注解方式配置,比配置文件方式更加灵活易用,是SpringMVC使用的主流模式. 1.在配置文件中开启SpringMVC的注解 <!-- 开启包扫描 --> < ...
随机推荐
- chrome浏览器截图
1.F12 打开开发者工具台 2.ctrl + shift + p,弹出搜索框之后输入: full 3.选中Mobile-- Capture fullsize screenshot ,成功保存图片.
- Redis主从复制(读写分离)
主从复制(读写分离):读在从库读,写在主库写. 主从复制的好处:避免redis单点故障构建读写分离架构,满足读多写少的需求. 主从架构: 操作(启动实例,在一台机器上启动不同的实例,进行伪主从复制): ...
- 服务应用突然宕机了?别怕,Dubbo 帮你自动搞定服务隔离!
某日中午,午睡正香的时候,接到系统的报警电话,提示生产某物理机异常宕机了,目前该物理机已恢复,需要重启上面部署的应用. 这时瞬间没有了睡意,登上堡垒机,快速重启了应用,系统恢复正常.本想着继续午睡,但 ...
- java实现邮箱发送信息--验证码的发送(163邮箱)
1.maven环境 <!-- 发送邮件 --> <dependency> <groupId>javax.mail</groupId> <artif ...
- CodeForces - 1114D-Flood Fill (区间dp)
You are given a line of nn colored squares in a row, numbered from 11 to nn from left to right. The ...
- tokitsukaze and RPG(暴力优化)
链接:https://ac.nowcoder.com/acm/contest/308/B 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...
- leetcode-双指针遍历
编写一个函数,其作用是将输入的字符串反转过来.输入字符串以字符数组 char[] 的形式给出.不要给另外的数组分配额外的空间,你必须原地修改输入数组.使用 O(1) 的额外空间解决这一问题.你可以假设 ...
- Selenium文件上传问题
- Typora第一次使用
一级标题 二级标题 三级标题 三个# + 空格 分割线 三个- 三个* 粗体 ctrl + B 斜体 ctrl + I 删除线 引用 一个大于号就可以了 图片: ! + [] + (图片路径) 超链接 ...
- 洛谷 P4072 [SDOI2016]征途 斜率优化DP
洛谷 P4072 [SDOI2016]征途 斜率优化DP 题目描述 \(Pine\) 开始了从 \(S\) 地到 \(T\) 地的征途. 从\(S\)地到\(T\)地的路可以划分成 \(n\) 段,相 ...