@Component
public class Utils {
/**
* 工具类注入依赖
*/
@Autowired
private Service service;
private static Utils utils;
@PostConstruct
public void init() {
utils = this;
utils.service = this.service;
}
//返回一个字符串
public static String test(){
return utis.service.get();
}
//直接在这里调用,会报空指针错误
public static void main(String[] args) {
System.out.println(utis.service.get());
}
}
我直接在本工具类的mian方法测试,会报空指针错误。但是我在Service调用Utils.test()方法,不报错,运行正确。不知道哪里出问题了?
@PostConstruct 只有spring在启动的时候会执行到这里
而main方法并不会执行,utis就是空对象,.service.get() 就会报空指针
@Component
public class Utils {
/**
* 工具类注入依赖
*/
@Autowired
private Service service;
private static Utils utils;
@PostConstruct
public void init() {
utils = this;
utils.service = this.service;
}
//返回一个字符串
public static String test(){
return utis.service.get();
}
//改为这样 手动创建对象,并赋值给成员变量
public static void main(String[] args) {
Utils utils = new Utils();
Service service = new Service();
utils.service = service;
System.out.println(utis.service.get());
}
}