java spring使用@Autowired與構造器進行變數初始化
阿新 • • 發佈:2019-01-29
如果要在構造器裡引用其他被依賴的bean來初始化類的變數,較好的實現方式是
- 用@Autowired註解建構函式
- 並且增加一個有依賴關係的傳參
- 同時類變數也用@Autowired註解以便其它函式使用(不必在建構函式裡使用this.client = client;這種方式來手動賦值)。
@Service public class StoreService { @Autowired private Client client; private final Store store; @Autowired public StoreService(Client client) { this.store = client.getStore(); } public void doLogic(){ this.client.print(); this.store.print(); } }
還有一種方式是另外寫一個初始化函式並用@PostConstruct註解,但這種方式有個缺點是不能初始化final的類變數。
@Service public class StoreService { @Autowired private Client client; private Store store; public StoreService() { } @PostConstruct private void init() { this.store = client.getStore(); } public void doLogic(){ this.client.print(); this.store.print(); } }