由於@AutoWired告訴應用程序上下文在這裏注入UserService實例,因此 是否需要UserController構造函數?使用@Autowired時,我需要定義一個構造函數嗎?
@Autowired
private UserService service;
public UserController(UserService service) {
this.service = service;
}
由於@AutoWired告訴應用程序上下文在這裏注入UserService實例,因此 是否需要UserController構造函數?使用@Autowired時,我需要定義一個構造函數嗎?
@Autowired
private UserService service;
public UserController(UserService service) {
this.service = service;
}
按照Javadoc用於自動裝配Autowired,註釋可以對「構造,字段設置器方法或配置方法」使用。
我個人比較喜歡你的第一個選項(構造函數注入),因爲myDao字段可以標記爲final:
@Controller
public class MyControllear {
private final MyDao myDao;
@Autowired
public MyController(MyDao myDao) {
this.myDao = myDao;
}
構造函數注入,您還可以測試在單元測試的類,而不代碼依賴於彈簧。
,第二種選擇將更好的寫法如下:
@Controller
public class MyControllear {
@Autowired
private MyDao myDao;
MyController() {
}
號的依賴性會自動Spring框架注入,前提是你啓用了註釋掃描程序包的類是在
「。構造函數注入還允許你在單元測試中測試類,而不需要依賴Spring的代碼「你能提供一個這樣的例子嗎? –