使用新关键字创建的Spring bean(@Component)中的自动装配

我有两个spring beans,如下所示:

@Component("A")

@Scope("prototype")

public class A extends TimerTask {

@Autowired

private CampaignDao campaignDao;

@Autowired

private CampaignManager campManger;

A(){

init_A();

}

}

由于遗留代码,我必须使用新关键字创建A的新对象

@Component("B")

@Scope("prototype")

public class B{

public void test(){

A a = new A();

}

}

当运行->类A中的spring bean为null时,我可以创建spring bean A的新实例并在其中仍然使用自动装配吗?

回答:

你的组件“ A”不是由Spring容器创建的,因此不会注入依赖项。但是,如果你需要支持一些旧代码(据我的问题理解),则可以使用@Configurable注释和构建/编译时间编织:

@Configurable(autowire = Autowire.BY_TYPE)

public class A extends TimerTask {

// (...)

}

然后,Spring会将自动装配的依赖项注入到组件A中,无论它是由容器本身实例化的,还是由某些旧代码中实例化的new

例如,要使用maven插件设置构建时编织,你必须:

  1. 添加<context:spring-configured/>到Spring应用程序上下文
  2. 配置Maven AspectJ插件:

在构建插件部分:

<build>

<plugins>

<plugin>

<groupId>org.codehaus.mojo</groupId>

<artifactId>aspectj-maven-plugin</artifactId>

<version>1.4</version>

<configuration>

<complianceLevel>1.6</complianceLevel>

<encoding>UTF-8</encoding>

<aspectLibraries>

<aspectLibrary>

<groupId>org.springframework</groupId>

<artifactId>spring-aspects</artifactId>

</aspectLibrary>

</aspectLibraries>

<!--

Xlint set to warning alleviate some issues, such as SPR-6819.

Please consider it as optional.

https://jira.springsource.org/browse/SPR-6819

-->

<Xlint>warning</Xlint>

</configuration>

<executions>

<execution>

<goals>

<goal>compile</goal>

<goal>test-compile</goal>

</goals>

</execution>

</executions>

</plugin>

</plugins>

</build>

…以及依赖项部分:

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-aspects</artifactId>

<version>3.1.1.RELEASE</version>

</dependency>

<dependency>

<groupId>org.aspectj</groupId>

<artifactId>aspectjrt</artifactId>

<version>1.6.11</version>

</dependency>

以上是 使用新关键字创建的Spring bean(@Component)中的自动装配 的全部内容, 来源链接: utcz.com/qa/406829.html

回到顶部