后台JAVA代码中获取Spring容器引用的问题

wen1984 2008-03-02 11:05:09
问题大概如下:
我前台Struts的Action中可以根据Spring提供的方法获取Spring中配置的Bean,同时我后台线程也想获取Spring中配置的Bean的引用.但是却无法引用.
我尝试了
------------------------------------
Resource resource=new ClassPathResource("applicationContextDAO.xml");
factory=new XmlBeanFactory(resource);
-----------------------------------

applicationContext = new FileSystemXmlApplicationContext("/WEB-INF/classes/applicationContext.xml");
----------------------------------
都无法正确获取.
我用的框架是Spring+Struts+JPA. Spring配置的DAO要注入一些东东.

谁有办法可以让后台JAVA代码和前台Struts中Action公用WebApplicationContext,兄弟们帮忙,急
...全文
295 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
magic_jjb 2009-07-28
  • 打赏
  • 举报
回复
在struts的action中我知道怎么实现,后台的java代码如何获取web中的applicationContext呢?楼主的方法使得有两份applicationContext存在,貌似不太好.

楼上的,这个应该到底怎么整呐?
  • 打赏
  • 举报
回复
在struts的action中我知道怎么实现,后台的java代码如何获取web中的applicationContext呢?楼主的方法使得有两份applicationContext存在,貌似不太好。
sys53 2009-05-10
  • 打赏
  • 举报
回复
这样,系统中就会用二个applicationContext ,因为web中是不是已经配了一个了呀。最好从web中那个引用过来。
wen1984 2008-03-03
  • 打赏
  • 举报
回复
问题解决了,多谢各位兄弟. 解决代码如下:

/**
*
*/
package com.sincere.utils;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
* @author Administrator
* Spring Bean管理容器,提供获取Spring配置Bean方法
* <br>采用单例模式
*/
public class XmlBeanFactoryUtil {
private static XmlBeanFactoryUtil o = new XmlBeanFactoryUtil();
ApplicationContext applicationContext = null;
/**
*
*/
private XmlBeanFactoryUtil(){
super();
initXmlBeanFactoryUtil();
}
/**
* 获取XmlBeanFactoryUtil单例
* @return XmlBeanFactoryUtil单例
*/
public static XmlBeanFactoryUtil getInstance(){
if(o == null){
o = new XmlBeanFactoryUtil();
}
return o;
}

/**
* 初始化
*/
private void initXmlBeanFactoryUtil(){
try{
//BaseAction baseAction = new BaseAction();
//webApplicationContext = baseAction.getWebApplicationContext();
//applicationContext = new FileSystemXmlApplicationContext("/WEB-INF/classes/applicationContext.xml");
//Resource resource=new ClassPathResource("applicationContextDAO.xml");
//factory=new XmlBeanFactory(resource);

applicationContext = new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml","applicationContextDAO.xml"});
}catch(Exception e){
System.out.println("获取Spring容器失败:");
e.printStackTrace();
}
}

/**
* 重新初始化
*/
public void reXmlBeanFactoryUtil(){
o = null;
o = new XmlBeanFactoryUtil();
}
/**
* @return the factory
*/
public ApplicationContext getFactory() {
return applicationContext;
}

}

希望能对后面的兄弟有所帮助
yibunengjing 2008-03-03
  • 打赏
  • 举报
回复
可以如下调用:
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
return ctx.getBean(beanName);

其中"applicationContext.xml"这个路径需要注意一下,是以WEB-INF/class为根路径的
langongkun 2008-03-03
  • 打赏
  • 举报
回复
XmlBeanFactory的参数应该是个FileInputStream吧。试试看!
FileSystemXmlApplicationContext的参数是个文件名applicationContext.xml,
ClassPathXmlApplicationContext才是个路径,应该是这个样子的。
wen1984 2008-03-03
  • 打赏
  • 举报
回复
ding...

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧