是否可以自动装配在ApplicationContext之外创建的依赖项?

时间:2011-08-05 23:53:52

标签: spring dependency-injection jax-rs

我有一个使用JAXRS来使用注释映射Restlet资源的应用程序。但是,我唯一的切入点实际上是在应用程序配置中定义资源类列表。这些类由Restlet或JAXRS实例化,因此我无法将它们放在我的ApplicationContext中。有没有办法让Spring扫描类路径并根据需要自动装配新实例?我已经尝试过使用以下内容:

@Autowired
private SessionFactory sessionFactory;

不幸的是,它并没有真正起作用。有没有办法做我在这里谈论的事情?

2 个答案:

答案 0 :(得分:4)

ApplicationContext.getAutowireCapableBeanFactory().autowireBean(object)会将所有依赖项注入对象。

答案 1 :(得分:4)

您可以使用AspectJ依赖注入由控件创建的bean,或者使用new创建对象。您可以阅读有关Springs文档的更多信息:http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/aop.html#aop-using-aspectj

基本上你要做的是将@Configurable注释添加到你想成为注入目标的类中。您还必须在Spring xml中启用Spring。最后,您必须在编译时编织或运行时编织之间做出决定。您可以再次从spring文档中获得帮助。

加载时间编织:http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/aop.html#aop-aj-ltw

如果您使用maven,可以查看此Stackoverflow问题以设置编译时间AspectJ:Why doesn't AspectJ compile-time weaving of Spring's @Configurable work?