68

ApplicationContext自分自身をBeanに注入したい。

何かのようなもの

public void setApplicationContext(ApplicationContect context) {
  this.context = context;
}

それは春に可能ですか?

4

5 に答える 5

132

以前のコメントは問題ありませんが、通常は次のことを好みます。

@Autowired private ApplicationContext applicationContext;
于 2011-02-07T01:33:49.897 に答える
44

ApplicationContextAwareインターフェイスを使用して簡単に。

public class A implements ApplicationContextAware {
  private ApplicationContext context;

  public void setApplicationContext(ApplicationContext context) {
      this.context = context;
  }
}

次に、実際の applicationContext で、Bean を参照するだけで済みます。

<bean id="a" class="com.company.A" />
于 2011-02-06T14:57:36.203 に答える
13

はい、ApplicationContextAwareインターフェイスを実装するだけです。

于 2011-02-06T14:58:09.033 に答える
2

特別な解決策: 任意の (Spring 以外の) クラスから Spring Bean を取得する

@Component
public class SpringContext {
    private static ApplicationContext applicationContext;

    @Autowired
    private void setApplicationContext(ApplicationContext ctx) {
        applicationContext = ctx;
    }

    public static <T> T getBean(Class<T> componentClass) {
        return applicationContext.getBean(componentClass);
    }
}
于 2021-02-25T09:32:19.523 に答える