SpringCloud
SpringBoot项目的@SpringBootApplication注解包含了包扫描注解@ComponentScan,需要注意的是它只能扫描到和这个类的同级目录或其同级子目录。如果需要扫描自定义的目录就需要在main方法上加上@ComponentScan
@ComponentScan(basePackages = {"com.video.service","com.video.controller"})
Ribbon 和 Feign
在SpringCloud项目中用Ribbon+RestTemplate做负载均衡,自定义包扫描时用上面的扫描方法是可以的。但是在用Feign做负载均衡时,Controller中就会报Bean注入错误,当把主方法类拿出来放到和其父目录同级时就不会报错。
//controller中的service,同级目录时会报错
@Autowired
HelloService helloService;
Application类:
@SpringBootApplication
@EnableFeignClients
@EnableDiscoveryClient
@ComponentScan(basePackages = {"com.video.service","com.video.controller"})
public class VtFeignApplication {
public static void main(String[] args) {
SpringApplication.run(VtFeignApplication.class, args);
}}
同级目录会报错:
子目录不会: