![](/img/trans.png)
[英]Instantiating a @autowired bean inside @postconstruct method inside controller, spring
[英]Bean inside one Controller Method
我的一種控制器方法中需要一個Spring管理的bean。 由於不需要其他任何方法,因此我認為無需對其進行自動接線。 我已經讀過,應該避免使用ApplicationContext.getBean()
,但是有替代方法嗎?
如果使用getBean()
是正確的決定,我應該提到所創建的bean具有自動裝配的屬性,並且在使用getBeans()
創建它時似乎沒有設置它們。
碼
@Controller
@RequestMapping("/controller*")
public class Controller {
@RequestMapping
public String get(Model model){
Task task = ApplicationContextHolder.getBean("Task");
task.getA();
return "index";
}
}
public class Task {
@Autowired(required=true)
private Service service;
public List<Object> getA() {
List<Object> list = service.findWhatever(); //service is null
return list;
}
}
我很可能沒有正確理解所有概念,或者我錯過了一些東西。 創建Task
Bean的最佳方法是什么?
如果Task
實例是由Spring管理的,那么您真的應該注入它。 在做
Task task = ApplicationContextHolder.getBean("Task");
遍歷整個方法調用以嘗試獲取Bean。 只需@Autowired
,您就不會頭痛。
注意
@Autowired(required=true)
private Service service;
在Application上下文中需要另一個Service
bean。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.