簡體   English   中英

Bean中的一種Controller方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM