大家有没有注意到,上一篇中提供者,暴露接口的方式?混搭。springboot 本身接口实现使用了注解的方式,而 Dubbo 暴露接口使用的是配置文件的实现方式,即如下:
代码:
- import org.springframework.stereotype.Service;
- //注意这里使用的是spring的注解
- @Service("userService") public class UserServiceImpl implements IUserService {@Override public void saveUser(User user) {
- System.out.println("保存用户:" + user.getUsername());
- }
- }
配置:
- <!-- 声明需要暴露的服务接口 -->
- <dubbo:service interface="com.itstyle.dubbo.service.IUserService" ref="userService"
- />
如果以上使用 spring 注解,我们必须开启扫描:
- @ComponentScan(basePackages = {
- "com.itstyle.dubbo"
- })
当然,如果你不想使用注解,全配置实现:
- <bean id="userService" class="com.itstyle.dubbo.service.impl.UserServiceImpl"
- />
- <!-- 声明需要暴露的服务接口 -->
- <dubbo:service interface="com.itstyle.dubbo.service.IUserService" ref="userService"
- />
好吧,其实在这个注解走天下的年代,显然配置已经落后了半个世纪,下面是全注解实现:
首先我们要在 dubbo.xml 配置以下代码:
- <!-- 使用注解方式暴露接口 -->
- <dubbo:annotation package="com.itstyle.dubbo" />
修改 UserServiceImpl.java:
- import com.alibaba.dubbo.config.annotation.Service;
- import com.itstyle.dubbo.domain.User;
- import com.itstyle.dubbo.service.IUserService;
- //这里引用阿里巴巴的注解配置
- @Service public class UserServiceImpl implements IUserService {@Override public void saveUser(User user) {
- System.out.println("保存用户:" + user.getUsername());
- }
- }
这时候,我们再次运行 SpringbootDubboApplication 类,可以正常运行,并且成功注册到 zookeeper。
项目:http://git.oschina.net/52itstyle/springboot_dubbo_provider
作者: 小柒
来源: https://yq.aliyun.com/articles/131865