Spring / Доступ к текущему applicationContext в фабричном методе одного компонента

1

Есть ли возможность получить фактическую ссылку на текущий ApplicationContext? :

    package myPackage;
    public class AFactory {

       public static A createA() {
          // I need to access to the current instance of ApplicationContext here, passing it to another object method for example 
       }

    }

В моем applicationContext.xml:

<bean id="myBeanA" class="myPackage.AFactory" factory-method="createA">
</bean>

ОБНОВИТЬ ------------------------------------------------- -------

Я думал, что пример с Java будет более популярным и будет работать в Scala, но это сложнее в Scala из-за того, что "статический" метод определяется вне класса:

object ActorSystemFactory {

  var applicationContext: ApplicationContext = _

  def createActorSystem = {
    val system = ActorSystem("AkkaScalaSpring")
    SpringExtensionImpl(system)(applicationContext)
    system
  }
}

class ActorSystemFactory extends ApplicationContextAware {

  def setApplicationContext(context: ApplicationContext) {
    ActorSystemFactory.applicationContext = context
  }

}

Для тех, кто знает Scala, здесь Spring предупреждает логически о том, что в классе не createActorSystem статический метод createActorSystem.

Кто-нибудь когда-либо занимался этим делом?

Теги:
spring

1 ответ

3
Лучший ответ

Сделайте свой bean-инструмент ApplicationContextAware

public class AFactory implements ApplicationContextAware {
    private static ApplicationContext applicationContext = null;

    public static ApplicationContext getApplicationContext() {
        return applicationContext;
    }

    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.applicationContext = applicationContext;
    }
}
  • 0
    Круто, просто проверяю :) Я дам вам знать
  • 0
    Я обновил свой вопрос, это звучит сложно со Scala.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню