gpt4 book ai didi

java - Spring/在一个bean的工厂方法中访问当前的applicationContext

转载 作者:行者123 更新时间:2023-11-29 05:26:52 26 4
gpt4 key购买 nike

是否有可能获得对当前 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's 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 静态方法。

有人处理过这种情况吗?

最佳答案

让你的 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;
}
}

关于java - Spring/在一个bean的工厂方法中访问当前的applicationContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22382333/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com