0

与えられた:

@Component
class Foo {}

class Bar {
   @Autowired
   Foo foo;
}

@Component
class Zoo {
   Bar bar = new Bar();
}

fooインスタンスのフィールドを自動配線するように Spring に指示するにはどうすればよいbarですか?

より具体的には、Spring がインスタンスを認識したら、Bar を Bean として扱うように指示できますか。@PostConstructたとえば、注釈を尊重しますか?

4

3 に答える 3

1

newを使用すると、Spring IOC コンテナーによって管理されないオブジェクトが作成されるため、手動で設定しました。

また@PostContruct、その注釈はコンテナーによって管理される Bean に対してのみ機能するため、尊重されません。

于 2012-11-28T16:49:26.970 に答える
0

どうしてだろう

@Component
class Zoo {
    @Autowired
    Bar bar;
}

 @Component
 class Bar {
    @Autowired
    Foo foo;
 }
于 2012-11-28T16:45:08.933 に答える
0

Spring は、コンパイル時の織り込みのために、aspectj を使用して @Configurable で注釈が付けられたクラスを接続できます。Maven の場合 (Roo によって作成された構成から取得):

        <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>

アプリケーションコンテキストで追加<context:spring-configured/>

于 2012-12-27T07:11:13.407 に答える