概述
@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/