Springcloud05版本和对应注解问题@EnableDiscoveryClient
注解@EnableEurekaClient上有@EnableDiscoveryClient注解,基本就是@EnableEurekaClient有@EnableDiscoveryClient的功能,其实**@EnableEurekaClient**注解就是一种方便使用eureka的注解而已,如果使用其他的注册中心则需要使用@EnableDiscoveryClient注解,而使用@EnableEure
注解@EnableEurekaClient上有@EnableDiscoveryClient注解,基本就是@EnableEurekaClient有@EnableDiscoveryClient的功能,其实**@EnableEurekaClient**注解就是一种方便使用eureka的注解而已,如果使用其他的注册中心则需要使用@EnableDiscoveryClient注解,而使用@EnableEurekaClient的情景,就是在服务采用eureka作为注册中心的时候,使用场景较为单一。
一般的使用情况,在已eureka作为注册中心的时候,服务提供者和消费者对应的启动类上应该添相应的注解:
例:
注册中心启动类:
@EnableEurekaServer
@SpringBootApplication
public class EurekaserverApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaserverApplication.class, args);
}
}
服务正常的启动类:
@SpringBootApplication
@EnableEurekaClient
@RestController
public class ServerHiApplication {
public static void main(String[] args) {
SpringApplication.run(ServerHiApplication.class, args);
}
@Value("${server.port}")
String port;
@RequestMapping("/hi")
public String home(@RequestParam String name) {
return "hi "+name+",i am from port:" +port;
}
}
直接说明重点吧!个人搭建环境的时候按部就班,没什么特别需要注意的地方;但是在使用公司大佬搭建的框架的时候直接看到对应的启动类:
@SpringBootApplication
public class PayApplication {
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(PayApplication.class, args);
SpringUtils.setFactory(context);
}
}
这样也同样可以将服务注册到eureka注册中心,可是这和我之前看的书有点差异:
@EnableEurekaClient注解入口分析,分析主要调用链中的类和方法。
通过@EnableEurekaClient这个简单的注解,在spring cloud应用启动的时候,就可以把EurekaDiscoveryClient注入,继而使用NetFlix提供的Eureka client。
现在的问题是@SpringBootApplication直接就启动并注册成功了。
其实也不算是问题,但是这种差异总要知道原因吧,后来仔细的对照了一下,发现这种情况的根本问题就在pom文件中对应的springcloud的版本上。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.8.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Edgware.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
1.5.8.RELEASE对应Edgeware.RELEASE---------这个是可以不使用client注解的
1.4.3.RELEASE-------------Camden.SR3---必须要加对应注解
查询原因:Dalston.SR4版本之前主函数上需要添加对应的注解;
而Edgware.RELEASE
中对Eureka Client注册的优化,默认认为客户端是要完成向注册中心进行注册的。
可以自参照https://spring.io/。查看一下具体的差别
更多推荐
所有评论(0)