是否可以在运行时使用Spring中的注释将新的原型范围bean实例注入Controller的方法参数?因此,无论何时调用该方法,Spring都会将限定bean作为其参数注入,因为它会注入@ModelAttribute。据我所知,@Autowired字段只在创建上下文时注入一次。从上下文的工厂方法中获取bean不是一种选择,因为这会将框架暴露给它的组件,从而违反了好莱坞原则。
我几乎已经阅读了Spring in Action一书,并且一直在阅读Spring Reference,但是没有找到关于这个问题的任何信息。
答案 0 :(得分:1)
你有几个选择。
定义一个原型bean并注入包裹在@Autowired
private ObjectFactory<PrototypeBean> factory;
@RequestMapping("/path")
public String handlerMethod() {
PrototypeBean instance = factory.getObject();
instance.someMethod();
return "view";
}
然后,您可以在处理程序方法中检索它。例如
factory.getObject()
每次拨打@Autowired
,您都会获得一个新实例。
至于直接这样做,不,Spring MVC没有内置功能,可以在调用处理程序方法时使用ApplicationContext
或其他方式注入bean。
但是,self-contained gist API允许您为所需的任何类型的参数定义实现。您可以定义新注释并使用它来注释相应的处理程序方法参数。实现将查找注释并从注入的function( date, cell ) { }
解析实例。您可以按名称,按类型执行此操作,但您可以这样做。