【问题标题】:Is it possible to autowire dependencies that are created outside of an ApplicationContext?是否可以自动装配在 ApplicationContext 之外创建的依赖项?
【发布时间】:2011-08-05 23:53:51
【问题描述】:

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

@Autowired
private SessionFactory sessionFactory;

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

【问题讨论】:

  • 你的类路径中有什么?
  • 在我回答了你的问题之后,我开始质疑自己我是否正确地阅读了你的:P 只是为了澄清一下,你是想将东西注入到由 Restlet 实例化的类中,还是试图将这些类注入到你的类中应用上下文?
  • 我正在尝试将依赖项自动装配到在我的控制之外创建的类中。

标签: spring dependency-injection jax-rs


【解决方案1】:

您可以使用 AspectJ 来依赖注入您的 bean,这些 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 文档中获得帮助。

加载时间编织: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?

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2022-10-05
      • 1970-01-01
      • 1970-01-01
      • 2017-05-08
      • 1970-01-01
      • 2019-08-10
      • 1970-01-01
      • 2012-10-24
      • 1970-01-01
      相关资源
      最近更新 更多