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>