Java 一个控制器内的Bean方法

Java 一个控制器内的Bean方法,java,spring,spring-mvc,Java,Spring,Spring Mvc,我的一个控制器方法中需要一个spring管理的bean。因为我在任何其他方法中都不需要它,所以我认为没有必要自动连接它。我已经读到应该避免使用ApplicationContext.getBean(),但是有其他选择吗 如果使用getBean()是正确的决定,那么我应该提到创建的bean具有自动连接属性,并且在使用getBean()创建它时,它们似乎没有被设置 代码 @Controller @RequestMapping("/controller*") public class Controlle

我的一个控制器方法中需要一个spring管理的bean。因为我在任何其他方法中都不需要它,所以我认为没有必要自动连接它。我已经读到应该避免使用
ApplicationContext.getBean()
,但是有其他选择吗

如果使用
getBean()
是正确的决定,那么我应该提到创建的bean具有自动连接属性,并且在使用
getBean()
创建它时,它们似乎没有被设置

代码

@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;
    }
}
@控制器
@请求映射(“/controller*”)
公共类控制器{
@请求映射
公共字符串get(模型){
Task Task=ApplicationContextHolder.getBean(“任务”);
task.getA();
返回“索引”;
}
}
公开课任务{
@自动连线(必需=真)
私人服务;
公共列表getA(){
List List=service.findWhatever();//服务为空
退货清单;
}
}

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

如果
任务
实例由Spring管理,那么您真的应该注入它。做

Task task = ApplicationContextHolder.getBean("Task");
遍历整个方法调用堆栈以尝试获取bean。只要
@Autowired
它,你就不会有任何头痛了

注意

@Autowired(required=true)
private Service service;

在应用程序上下文中需要另一个
服务
bean。

如果
任务
实例由Spring管理,那么您真的应该注入它。做

Task task = ApplicationContextHolder.getBean("Task");
遍历整个方法调用堆栈以尝试获取bean。只要
@Autowired
它,你就不会有任何头痛了

注意

@Autowired(required=true)
private Service service;
在应用程序上下文中需要另一个
服务
bean