SpringBoot集成dubbo初认识;
1.1springBoot依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.8.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
倒入springboot所需要的依赖;
然后测试一下是否有问题;
1.2测试springboot;
@Controller
@SpringBootApplication
public class BootTest {
@RequestMapping("/")
@ResponseBody
public String testss(Model model){
System.out.println("进来了");
return "ha很牛逼的boo454564564t";
}
public static void main(String[] args){
ConfigurableApplicationContext run = SpringApplication.run(BootTest.class, args);
//BootTest bean = run.getBean(BootTest.class);
}
}
启动控制台显示:
大致是Spirng的图标;
显示tomcat服务器端口号
如果更改端口服务好需要配置文件中:
端口默认是8080;
然后进行访问:localhost:8080
表示SpringBoot启动成功;
2.1搭建dubbo
首先倒入依赖;
<dependency>
<groupId>io.dubbo.springboot</groupId>
<artifactId>spring-boot-starter-dubbo</artifactId>
<version>1.0.0</version>
</dependency>
导入依赖后需要写出一个提供服务方(product)和一个消费服务方(consumer);
2.2服务提供方配置文件:
声明这是基于本地配置zookeeper连接的;(zookeeper基于本地只需要更改config文件中的zoo_xxxx为zoo.cfg这样就好了(更改文件名),然后启动(你要是不知道启动在哪就别往下看了))
server.port=8081
#spring.session.store-type=none
#dubbo provider
spring.dubbo.application.name=provider_test
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=20880
spring.dubbo.scan=com.aladingbank
提供方就会有接口和接口实现类;
写出接口和接口实现类
注意点就是实现类类名上的注解和版本号;(版本号可以不写)
@Service(version="1.0.0.1")
public class UserServceImpls implements UserServicei {
public String getUser() {
return "牛逼";
}
}
注意点就是和配置文件中的包名需要一致,也就是自动扫描这个包;
然后在写出SpringBoot启动;
@RestController
@SpringBootApplication
public class BootTest {
public static void main(String[] args){
SpringApplication.run(BootTest.class, args);
}
}
注意点:这个启动springBoot的类写在接口包名下的在下一个类;这样才能扫描到不然会报空;
然后点击启动springBoot ;
如果显示以上标记的字样就代表已经将类注册到zookeeper上了;也就是提供服务方类写好了;
此时还需要一个消费方:注意:消费方在springboot中启动时就需要去加载的,所以开发中是不会基于本地通过zookeeper调用的而是直接注入调用自己的实现方法的;
2.3消费方配置:
同样的pom依赖;
<dependency>
<groupId>io.dubbo.springboot</groupId>
<artifactId>spring-boot-starter-dubbo</artifactId>
<version>1.0.0</version>
</dependency>
然后基于写一个提供方的接口;注意包名和配置文件扫描包名一致;
server.port=8082
#dubbo provider
spring.dubbo.application.name=consumer
spring.dubbo.registry.address=zookeeper://127.0.0.1:20880
spring.dubbo.scan=com.aladingbank
然后写一个dubbo调用的普通类:
@Component
public class Dubbosss {
@Reference(version="1.0.0.1")//这里的注解意思就是去调用了还有就是和发布版本保持一致(实现类上)
UserServicei userServicei;
public void man(){
String user = userServicei.getUser();
System.out.println(user);
}
}
然后就是启动springboot;
@Controller
@SpringBootApplication
public class BootTest {
@RequestMapping("/")
@ResponseBody
public String testss(Model model){
System.out.println("进来了");
return "ha很牛逼的boo454564564t";
}
public static void main(String[] args){
ConfigurableApplicationContext run = SpringApplication.run(BootTest.class, args);
Dubbosss bean = run.getBean(Dubbosss.class);//注意点就是这里调用那个普通类然后启动方法;
bean.man();
}
}
当你启动springboot的时候就会去加载文件了然后就会自动启动消费者调用dubbo提供服务方然后自动打印;
如果你要单独不靠启动的话会报null加载不到制定实现类;
总结就是好用,注意点就是:springBoot 在启动的时候就已经加载所有的配置文件了包括一个制定的配置文件初始化类;springBoot启动会很慢但是开发效率却很高;