gpt4 book ai didi

java - 在后端层中获取对 spring bean 的引用的最佳方法是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:28:54 25 4
gpt4 key购买 nike

我有两个 spring 配置文件,我在我的 web.xml 中指定它们,如下所示。

web.xml snippet 

..
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/classes/domain-context.xml WEB-INF/classes/client-ws.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
..

我必须从我的域对象调用 Web 服务客户端,为了获得对 Web 服务客户端的引用,我这样做:

ApplicationContext context = new ClassPathXmlApplicationContext("client-ws.xml"); //b'cos I don't want to use WebApplicationContextUtils
ProductServiceClient client = (ProductServiceClient) context.getBean("productClient");
..

client.find(prodID); //calls a Web Service
..

但是,我担心查找 client-ws.xml 文件并获取对 ProductServiceClient bean 的引用效率不高。我想使用 WebApplicationContextUtils 来获取它。但是,我不希望我的域对象依赖于 ServletContext(Web/控制层对象),因为 WebApplicationContextUtils 依赖于 ServletContext。在后端层中获取对 spring bean 的引用的最佳方法是什么?

谢谢!

最佳答案

我更喜欢将 Spring 容器注入(inject)到 applicationContext 变量中。 Spring 通过 ApplicationContextAware 接口(interface)支持这一点。然后很容易从代码中请求一个新的 bean。

一个例子:

public class ContextAwareFactory implements ApplicationContextAware {

private ApplicationContext applicationContext;

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

public String getConfigValue() {
return (String)applicationContext.getBean("config-value");
}
}

关于java - 在后端层中获取对 spring bean 的引用的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2706630/

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