Dubbo 系列(三)
注意:本文是个人学习文章
springBoot 整合 dubbo
pom.xml
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
一、默认 application.properties
application.yml
#dubbo
dubbo:
application:
name: produce-app
registry:
address: zookeeper://127.0.0.1:2181
protocol:
name: dubbo
port: 20880
// @Service 暴露服务
@com.alibaba.dubbo.config.annotation.Service
@Component
public class OrderServiceImpl implements OrderService {
@Resource
private OrderDao orderDao;
@Override
public List<OrderVo> queryAll() {
return orderDao.selectList(null);
}
}
// @Reference 引用服务
@Reference
private OrderService orderService;
二、使用 .xml 文件
//@ImportResource 导入资源
@ImportResource("classpath:provider.xml")
@SpringBootApplication(exclude = DubboAutoConfiguration.class)
public class ProviderApp {
public static void main(String[] args){
SpringApplication.run(ProviderApp.class, args);
}
}
三、使用 注解API 的 方式
#暴露服务
#@com.alibaba.dubbo.config.annotation.Service
#引用服务
#@Reference
注解类的配置
@Configuration
public class DubboConfig {
/**
* <dubbo:application name="dubbo-produce" />
* @return
*/
@Bean
public ApplicationConfig applicationConfig() {
ApplicationConfig applicationConfig = new ApplicationConfig();
applicationConfig.setName("dubbo-produce");
return applicationConfig;
}
/**
* <dubbo:registry address="zookeeper://127.0.0.1:2181" />
* @return
*/
@Bean
public RegistryConfig registryConfig() {
RegistryConfig registryConfig = new RegistryConfig();
registryConfig.setAddress("zookeeper://127.0.0.1");
return registryConfig;
}
/**
* <dubbo:protocol name="dubbo" port="20881" />
* @return
*/
@Bean
public ProtocolConfig protocolConfig() {
ProtocolConfig protocolConfig = new ProtocolConfig();
protocolConfig.setName("dubbo");
protocolConfig.setPort(20882);
return protocolConfig;
}
/**
* <dubbo:service
* interface="com.example.service.OrderService" ref="orderService">
* <dubbo:method name="queryAll"></dubbo:method>
* </dubbo:service>
* @param orderService
* @return
*/
@Bean
public ServiceConfig<OrderService> serviceServiceConfig(@Autowired OrderService orderService) {
ServiceConfig<OrderService> serviceConfig = new ServiceConfig<>();
//暴露的接口
serviceConfig.setInterface(OrderService.class);
//导入对象
serviceConfig.setRef(orderService);
//设置方法的
MethodConfig methodConfig = new MethodConfig();
methodConfig.setName("queryAll");//方法名
serviceConfig.setMethods(Arrays.asList(methodConfig));
return serviceConfig;
}
}