SpringCloud微服务框架搭建采坑记录

 

  1. springCloud config配置中心默认是使用git来管理配置配置文件的,如果要使用svn,则需要将profile的设置成subversion
  2. springBoot的版本和springCloud的相关依赖包版本最好比配,如果springCloud的相关依赖包较老,而springBoot的版本又是最新的,则会因为jar包冲突导致无法启动,可适当降低springBoot版本
<parent>

  <groupId>org.springframework.bootgroupId>

  <artifactId>spring-boot-starter-parentartifactId>

  <version>1.5.6.RELEASEversion>

  <relativePath/> 

parent>

 3. springCloud config 配置中心中的git仓库地址或者svn配置有问题时,springCloud producer可能无法启动,要确保可以从springCloud config读取到配置文件内容;

 4. bean无法注入   

Consider defining a bean of type 'com.tao.test.config.properties.TestPro’

是因为包扫描路径的问题

正常情况下加上@Component注解的类会自动被Spring扫描到生成Bean注册到spring容器中,既然他说没找到,也就是该注解被没有被spring识别,问题的核心关键就在application类的注解SpringBootApplication 

Spring Cloud 会扫描 注解SpringBootApplication标注的类所处的package以及该package下的子包,例如下图中的package com.tao.test以及它的子包,比如com.tao.test.config

所以在多模块依赖时,比如producer需要依赖common模块中的bean时,解决方法1:

我们需要将common模块中的bean放置在 包com.tao.test或者其子包下面,

解决方法2:在producerSpringBootApplication 注解上手动设置需要扫描的包名@SpringBootApplication(scanBasePackages={"com.tao.test.config","com.tao.test"})

5. Feign是自带断路器的,D版本的Spring Cloud中,它没有默认打开。需要在配置文件中配置打开它,在配置文件加以下代码:

feign.hystrix.enabled=true

使用方法

1.在api接口上的FeignClient注解中添加fallback指定的class

@FeignClient(name = "test-provider-hbase",fallback = UserServiceApiHystrix.class)

public interface UserServiceApi {
  /**
   * @param userId
   * @return
   */
  @RequestMapping(value = "/user", method = RequestMethod.GET)
  ResultDTO findUser(@RequestParam("userId") Integer userId);
}

同时要新建降解方案对应的接口实现类UserServiceApiHystrix 来实现UserServiceApi接口,并加上@Component完成bean注入,并在实现方法中添加错误日志打印已经接口的降解方案
6.spring boot 事物管理注解 @EnableTransactionManagement
7.关于配置中心配置自动刷新,当配置中心和各子模块都接入了kafka及消息总线后,向各子模块发送 refresh配置更新请求并不能使配置自动刷新,只有向配置中心发送refresh请求才能自动刷新配置;
8对于远程服务对外暴露的api中,如果返回值对应的class中含有内部类,并且这个内部类含有带参数的构造器,则必须为该内部类显示声明一个默认构造器,否则会因为json格式化失败导致远程服务无法被调用

你可能感兴趣的:(SpringCloud微服务框架搭建采坑记录)