加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 使用new关键字创建的Spring bean(@Component)中的自动装

发布时间:2020-12-14 05:32:54 所属栏目:Java 来源:网络整理
导读:我有两个春豆如下: @Component("A")@Scope("prototype")public class A extends TimerTask { @Autowired private CampaignDao campaignDao; @Autowired private CampaignManager campManger; A(){ init_A(); } } 由于旧的代码,我必须使用新的关键字来创建一
我有两个春豆如下:
@Component("A")
@Scope("prototype")
public class A extends TimerTask {

    @Autowired
    private CampaignDao campaignDao;
    @Autowired
    private CampaignManager campManger;
    A(){
        init_A();
       }
    }

由于旧的代码,我必须使用新的关键字来创建一个新的对象

@Component("B")
@Scope("prototype")
public class B{
     public void test(){
       A a = new A();
     }
}

运行时 – > A类中的spring bean是空的,我可以创建一个新的spring bean A的实例,还是使用自动装配吗?

解决方法

您的组件“A”不是由Spring容器创建的,因此依赖关系不会被注入.但是,如果您需要支持一些遗留代码(从您的问题可以看出),您可以使用@Configurable注释和构建/编译时间编织:
@Configurable(autowire = Autowire.BY_TYPE)
public class A extends TimerTask {
  // (...)
}

然后,Spring会将自动连线依赖关系注入到组件A中,无论是由容器本身实例化还是在新的代码中实例化.

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

>添加< context:spring-configured />到Spring应用程序上下文
>配置Maven AspectJ plugin:

在构建插件部分:

<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参考
http://static.springsource.org/spring/docs/current/spring-framework-reference/html/aop.html#aop-atconfigurable

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读