記錄:在實體類中加入@Component注解和@Autowired注解時Service不能注入成功。
@Component //把普通pojo實例化到spring容器中 ①
public class MyUtil {
// 這里是需要注入的Service ②
@Autowired
private MyService myService;
private static MyUtil myUtil;
//初始化 ③
@PostConstruct
public void init() {
myUtil = this;
}
//調用 ④
public static void insertParam() {
// 調用方法 ⑤
myUtil.myService.testInsert();
}
}
注釋:①將普通pojo實例化到容器中、如果無注解myUtil為null
②spring自動注入,如果在靜態方法中調用此注入類的方法,發現注入為'null';這里不是因為spring未注入,而是被static方法給'清空'了,在無法先於static方法初始化時可以使用@PostConstruct進行初始化。
(注:@PostConstruct修飾的方法會在服務器加載Servle的時候運行,並且只會被服務器執行一次。PostConstruct在構造函數之后執行,init()方法之前執行。)
③使用@PostConstruct注解的方法public void init()先給該類賦值,然后通過@Autowired注入進來。這樣不會影響dao等service下面調用的注入。
④ static方法使用類名直接調用
⑤調用方法 myService現在是作為myUtil的屬性
