SpringCloud(七):搭建过程中的一些bug
之前一直想,既然springCloud基于springBoot。那为什么很多公用的包还是要放在子模块pom中。试了一下,放在父模块中,应该也是没有什么问题的。
之前看视频上讲子模块的名字最好下划线。
但是他没说注册到eureka的服务名称,不能下划线!!!啊!不能下划线!!!真的坑了好几天。
还有就是需要注解的地方太多了,老是忘记注解。
在注入restTemplate的bean的时候碰到很多种实现方式:
我用的是最简单的:
@Configuration public class RestTemplateConfig { @Bean @LoadBalanced//以restTemplate调用的时候,开启ribbon的本地的负载均衡调用 RestTemplate restTemplate() { return new RestTemplate(); } } @Autowired private RestTemplate restTemplate;
坤哥用的是:
@Bean @LoadBalanced public RestTemplate restTemplate() { HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory(); httpRequestFactory.setConnectionRequestTimeout(5000); httpRequestFactory.setConnectTimeout(5000); httpRequestFactory.setReadTimeout(5000); return new RestTemplate(httpRequestFactory); }
但是网上好像说,新版的注入方式是:
新版的需要这样注入: @Bean @LoadBalanced RestOperations restTemplate(RestTemplateBuilder builder) { return builder.build(); } @Autowired RestOperations restTemplate;
消费的三种方式。
- 背景:把项目迁移到公司电脑启动eureka-server报错
- 环境:改了下jdk1.7
- 主要报错信息:RedirectingEurekaHttpClient:Request execution error;java.net.ConnectException: Connection refused: connect无法连接服务注册中心
- 排查原因
- application.yml中的命名必须按骆驼命名法(用serviceUrl不用service-url,用defaultZone不用default-zone)
- 关闭鉴权,security:basic:enabled:false(这涉及到springboot的security的知识点和HttpBasic认证的知识点了)
- 默认情况下Eureka会把自己作为客户端来尝试注册,需要禁止register-with-eureka和fetch-registry。
- 最终是根据原因3解决的
- 原因1,我没触犯,我很规范的
- 原因2,我没用spring-security的jar包
- 就是原因3