前言:通常須要在static方法裏調用注入進來的service,由於是靜態方法,因此必須聲明該service也必須是static的,這時候你會發現注入不進來,會報null指針,這個時候須要使用 @PostConstruct來解決。java
第一種函數
Spring也基於JSR-250註解,包括@PostConstruct,@PreDestroy和@Resource 註解。雖然這些註釋都沒有真正必需的,由於你已經有其餘的候補,但仍是讓我給他們有關一個簡單的想法。@PostConstruct 和@PreDestroy 註解:要定義安裝和拆卸一個bean,咱們只是聲明瞭初始化方法和/或銷燬,<bean>方法的參數。在init-method屬性指定一個方法,是被稱爲bean上後當即實例化。一樣,銷燬規定了被稱爲bean被從容器中取出以前的方法。this
註解@PostConstruct 這個其實就是相似聲明瞭,當你加載一個類的構造函數以後執行的代碼塊,也就是在加載了構造函數以後,就將service複製給一個靜態的service。類上須要用@Component.net
//解決static方法 調用注入對象的方法 @Autowired private ConfigDaoImpl configDaoImpl; private static ConfigUtil configUtil; @PostConstruct public void initialize() { //@Component will call construct configUtil = this; }
第二種,經過set方法注入,類上須要用@Component指針
//解決static方法 調用注入對象的方法 private static UserService userService; @Autowired public void setUserService(UserService userService) { DubboAuthService.userService = userService; }
博客地址:http://my.oschina.net/wangniancode