为了使用@Autowire注解,使用注解的对象必须来自spring上下文。
JSF 托管 bean 是由 JSF 的 IOC 而不是 Springs 创建的,因此我不能在其中使用 @Autowire 必须使用 faces-config.xml 和托管属性。
我已经设置了一个 EL 解析器,它可以让 spring bean 作为托管属性,我想更进一步,并摆脱每次需要自动装配某些东西时进入 faces-config.xml 的需要。这可能吗?
为了使用@Autowire注解,使用注解的对象必须来自spring上下文。
JSF 托管 bean 是由 JSF 的 IOC 而不是 Springs 创建的,因此我不能在其中使用 @Autowire 必须使用 faces-config.xml 和托管属性。
我已经设置了一个 EL 解析器,它可以让 spring bean 作为托管属性,我想更进一步,并摆脱每次需要自动装配某些东西时进入 faces-config.xml 的需要。这可能吗?
只需使用@Controller
(or @Component
) 和@Scope("request")
(or session
) 注释您的托管 bean 并添加<context:component-scan>
(如果您没有),托管 bean 将自动被检测为 spring bean。而且由于您已经在使用 ELResolver,应该就是这样 - 您应该能够使用@Autowired
(或者更好 -@Inject
如果使用 spring 3.0)。
您可以使用@ManagedProperty(#{'someBean'})自动装配 jsf bean 中的其他 bean