在@Component注解的类下,再使用了@Resource或@Autowired注解导致依赖注入失败。
在@Component注解的类下,再使用了@Resource或@Autowired注解。如此操作会导致依赖注入失败。
这是因为spring加载它们的顺序不同,在使用@Component注解将bean实例化到spring容器内的时候,因为@Autowired是在这个bean之中的,此时@Autowired还未完成自动装载,所以导致依赖注入的service为null
@Component
public class Test {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
// @Autowired
// private UserServer userServer;
private static UserServer userServer;
@Autowired
public void setUserServer(UserServer userServer) {
Test.userServer = userServer;
}
}
把@Autowired注解放在方法上会在类加载后自动注入这个方法的参数,并执行一遍方法。