1

次のSpringアプリケーションコンテキストとクラスAを考えると、クラスAを実行するとどうなりますか?

applicationContext.xml(クラスパス内):

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
    <bean name="a" class="A"/>
</beans>

A.java:

class A {
    private ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");

    public static void main(String[] args) {
        A a = new A();
    }
}
4

1 に答える 1

5

あなたのアプローチに疑問を呈するわけではありませんが、なぜこれが必要なのですか? Bean がその一部であるアプリケーション コンテキストへのポインターを必要とする場合、ApplicationContextAwareを実装する必要があります。セッターを実装すると、Spring がアプリ コンテキストを Bean に注入します。

私が間違っていない限り、サンプル コードは実際にはその Bean にそのアプリ コンテキストへのポインターを与えません。以前と同じ XML ファイルを使用して新しいアプリ コンテキストを起動します。これにより、新しい Bean が作成され、別のアプリ コンテキストなどが開始されます (無限ループ)。コードを試して、これが発生するかどうかを確認してください。

于 2010-05-27T18:27:35.650 に答える