Есть ли возможность получить фактическую ссылку на текущий 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
.
Кто-нибудь когда-либо занимался этим делом?
Сделайте свой 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;
}
}