java - 手动创建实例时如何使@autowire在spring中工作

标签 java spring autowired


我有一个java接口(interface),说ITest由两个类Class1和Class2实现。现在我有一个工厂类,我用它来决定返回哪个实现。就像

if(something)
    return new Class1()
else
   return new Class2()

问题是我在 Class1 中有 Autowiring 字段,它没有被实例化,但相同的 Autowiring 在通过 Autowiring 实例化的其他类中也有效。
这是 Class1 的代码

@Componene
public Class1 implements ITest{
  @Autowired
  private SomeClass obj;
}

不知道如何解决这个问题。由于 SomeClass 的 Autowiring 在其他类中工作得很好。

最佳答案

在工厂类中注入(inject) applicationContext 并使用它来创建 Bean:

@Autowired private ApplicationContext applicationContext;
......
......
         if(something){
            return applicationContext.getBean("com.xyz.Class1");
         }
......
......

或者您可以在 Class1 和 Class2 之上使用 @Configurable。这需要启用 AspectJ 编织。当您使用 new 时,Spring 将神奇地创建 bean。

关于java - 手动创建实例时如何使@autowire在spring中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48418516/

相关文章:

php - 忽略 Autowiring 目录中的类

java - @Autowire 未正确注入(inject) Spring @Bean 配置

java else 没有 if 错误

java - 今天我们真的需要在 close() 之前调用 flush() 吗?

spring - 带有 persistence.xml 的 Intellij JPA 控制台

java - Spring MVC Hibernate MySQL - 少1天进入数据库

java - 如何使用 JProgressBar?

JAVA链表搜索链表将数据与用户输入的数据进行比较?

java - 响应休息分页请求的正确方法

java - Autowiring 在 Spring 中不起作用