0

在我的一个控制器方法中,我需要一个 spring 管理的 bean。由于我在任何其他方法中都不需要它,因此我认为没有必要对其进行自动装配。我已经读到应该避免使用它ApplicationContext.getBean(),但是有没有其他选择?

如果 usinggetBean()是正确的决定,我应该提到创建的 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;
    }
}

我完全有可能不正确理解所有概念,或者我遗漏了一些东西。创建Taskbean 的最佳方法是什么?

4

1 回答 1

3

如果Task实例是由 Spring 管理的,那么你真的应该注入它。正在做

Task task = ApplicationContextHolder.getBean("Task");

通过一整套方法调用来尝试获取 bean。就是@Autowired这样,你不会头疼的。

注意

@Autowired(required=true)
private Service service;

期望Service应用程序上下文中的另一个 bean。

于 2013-08-01T18:11:55.500 回答