概述
@Component类下的@Resource或@Autowired无效
下面的注入并没有成功
1 2 3 4 5 6 7 8 9 10 11
| @Component @Slf4j public class WebSocketServer {
@Resource(name = "socketRouter") private ISocketRouter socketRouter; }
|
原因 1
在使用@Component注解将bean实例化到spring容器内的时候,@Resource或@Autowired是在这个bean之中的,@Resource或@Autowired
还未完成自动装载,所以导致service为null。
解决方法
在加载当前 bean时,set方法会再次执行一次.
注意,参数为静态变量,因为这里的 set 方法只会执行一次.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| @Component @Slf4j public class WebSocketServer {
private static ISocketRouter socketRouter;
@Resource(name = "socketRouter") public void setEmployeeServer(ISocketRouter socketRouter) { this.socketRouter = socketRouter; } }
|
本文地址: https://github.com/maxzhao-it/blog/post/27993/