Eureka服务注册中心模块
在这里,我们需要用的的组件上Spring Cloud Netflix的Eureka ,eureka是一个服务注册和发现模块。
下一步->选择
启动一个服务注册中心
1 | package cn.zm.eureka; |
eureka是一个高可用的组件,它没有后端缓存,每一个实例注册之后需要向注册中心发送心跳(因此可以在内存中完成),在默认情况下erureka server也是一个eureka client ,必须要指定一个 server。eureka server的配置文件appication.yml:
yml配置
- 避免在注册中心注册自己
registerWithEureka: false
fetchRegistry: false
1 | server: |
启动测试服务
输入http://localhost:8700/ 正常启动
创建一个服务提供者
这里在netflix模块下创建一个mybatis的web应用测试
引入mybatis-plus模块此模块也包含了common通用模块
1 |
|
开启eureka客户实例
@EnableEurekaClient 仅需一句既可开启客户端
1 | package cn.zm.netflix.app; |
启动client
可以看到client已经在注册中心注册实例
需要注意的事项
可以用一下代码指定加载公共依赖模块的组件这样应用模块就可以不用再写配置了,多个应用模块依赖统一个组件,一次构建处处开发.
1 | "cn.zm.common.config", "cn.zm.plus.config"}) (scanBasePackages = { |
client端的swagger
正常访问
可能遇到的错误
1 | Error starting Tomcat context. Exception: org.springframework.beans.factory.BeanCreationException. Message: Error creating bean with name 'servletEndpointRegistrar' defined in class path resource [org/springframework/boot/actuate/autoconfigure/endpoint/web/ServletEndpointManagementContextConfiguration$WebMvcServletEndpointManagementContextConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.actuate.endpoint.web.ServletEndpointRegistrar]: Factory method 'servletEndpointRegistrar' threw exception; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'refreshEndpoint' defined in class path resource [org/springframework/cloud/autoconfigure/RefreshEndpointAutoConfiguration$RefreshEndpointConfiguration.class]: Unsatisfied dependency expressed through method 'refreshEndpoint' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'configDataContextRefresher' defined in class path resource [org/springframework/cloud/autoconfigure/RefreshAutoConfiguration.class]: Post-processing of merged bean definition failed; nested exception is java.lang.IllegalStateException: Failed to introspect Class [org.springframework.cloud.context.refresh.ConfigDataContextRefresher] from ClassLoader [sun.misc.Launcher$AppClassLoader@18b4aac2] |
提示tomcat无法正常启动
原因: springboot的版本与springcloud的版本不匹配造成的
解决: 找到对应的springboot版本对应的springcloud版本修改即可
原xml配置:
1 | <properties> |
修改为:
1 | <properties> |
参考资料:
https://start.spring.io/actuator/info 含有所有springcloud对应springboot对应版本
https://www.fangzhipeng.com/springcloud/2017/06/01/sc01-eureka.html eureka的教程