静态方式使用@Autowired注入失败根本原因:目标工具类不在Spring容器中初始化,@Autowired不会生效。
解决方案:首先在静态方法类上加上注解@Component,从而使Spring管理这个类,使@Autowired生效
下面两种方式的原理一样:通过Spring注入的方式获得service,然后将service赋值给静态的statisService
注入方式①:
@Component //必须加@Component,才能让Spring通过@Autowired注入service
public class MyUtils {
private statis Service statisService;
@Autowired //注入service
public void setService(Service service) {
statisService = service; //将service赋值给静态的statisService
}
}
注入方式②:
@Component //必须加@Component,才能让Spring通过@Autowired注入service
public class MyUtils {
@Autowired //注入Service
private Service Service;
private statis Service statisService;
@PostConstruct
public void init() {
statisService = service; //将service赋值给静态的statisService
}
}