当我们自己在编写独立的模块过着jar包的时候,在另外一个模块引用到这个依赖,若像是本例中的UserClient,是需要注入成Bean才能成功注入到Spring的IO容器中,从而成功调用。下面有两个解决方法:
问题:
UserClient存在,但是无法在orderService中启动之后扫描到,从而无法注入Bean对象。
报错解决:
APPLICATION FAILED TO START
Description:
Field userClient in cn.itcast.order.service.OrderService required a bean of type ‘cn.pzhu.reign.clients.UserClient’ that could not be found.
The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)
Action:
Consider defining a bean of type ‘cn.pzhu.reign.clients.UserClient’ in your configuration.
Process finished with exit code 1
简而言之,UserClient存在,但是无法在orderService中启动之后扫描到,从而无法注入Bean对象。
问题解决:
当定义的FeignClient不在SpringBootApplication的扫描包范围时,这些FeignClient无法使用。有两种方式解决:
方式一:指定FeignClient所在包(扩大范围)
@EnableFeignClients(basePackages = "cn.itcast.feign.clients")
方式二:指定FeignClient字节码(精准定位)@EnableFeignClients(clients= UserClient.class)
@EnableFeignClients(clients= UserClient.class,defaultConfiguration = FeignClientConfiguration.class)
@MapperScan("cn.itcast.order.mapper")
@SpringBootApplication
public class OrderApplication {
public static void main(String[] args) {
SpringApplication.run(OrderApplication.class, args);
}
}