Java spring:我可以自动关联组件字段的字段吗?
鉴于: 如何在Java spring:我可以自动关联组件字段的字段吗?,java,spring,autowired,Java,Spring,Autowired,鉴于: 如何在bar实例中安装struct Spring以自动关联字段foo 更具体地说,我可以指示spring在看到实例后将Bar视为bean。例如,尊重@PostConstruct注释?为什么不能 @Component class Foo {} class Bar { @Autowired Foo foo; } @Component class Zoo { Bar bar = new Bar(); } 您已经手动设置了它,因为使用new创建的对象不是由SpringIo
bar
实例中安装struct Spring以自动关联字段foo
更具体地说,我可以指示spring在看到实例后将Bar视为bean。例如,尊重@PostConstruct
注释?为什么不能
@Component
class Foo {}
class Bar {
@Autowired
Foo foo;
}
@Component
class Zoo {
Bar bar = new Bar();
}
您已经手动设置了它,因为使用
new
创建的对象不是由SpringIoC容器管理的
它也不尊重
@postcontract
,因为该注释仅适用于由容器管理的bean。Spring能够使用aspectj连接带有@Configurable注释的类,以进行编译时编织。在maven中(取自Roo创建的配置):
org.codehaus.mojo
aspectj maven插件
1.2
org.aspectj
aspectjrt
${aspectj.version}
org.aspectj
aspectjtools
${aspectj.version}
编译
测试编译
真的
org.springframework
春季方面
${java.version}
${java.version}
在应用程序上下文中添加
,因为我不想让它成为一个“根”bean。另外,在我的例子中,创建类会传递Zoo的'this'参数,它是一个原型bean你说的“root”bean是什么意思?
@Component
class Zoo {
@Autowired
Bar bar;
}
@Component
class Bar {
@Autowired
Foo foo;
}
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.2</version>
<!-- NB: do not use 1.3 or 1.3.x due to MASPECTJ-90 and do not use 1.4 due to declare parents issue -->
<dependencies>
<!-- NB: You must use Maven 2.0.9 or above or these are ignored (see MNG-2972) -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${aspectj.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>${aspectj.version}</version>
</dependency>
</dependencies>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
<configuration>
<outxml>true</outxml>
<aspectLibraries>
<aspectLibrary>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</aspectLibrary>
</aspectLibraries>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>