本文转:http://blog.csdn.net/songylwq/archive/2010/07/21/5752383.aspx
获得spring里注册Bean的四种方法,特别是第三种方法,简单:
一:方法一(多在struts框架中)继承BaseDispatchAction
/
import com.mas.wawacommunity.wap.service.UserManager;
public class BaseDispatchAction extends DispatchAction {
/**
* web应用上下文环境变量
*/
protected WebApplicationContext ctx;
protected UserManager userMgr;
/**
* 获得注册Bean
* @param beanName String 注册Bean的名称
* @return
*/
protected final Object getBean(String beanName) {
return ctx.getBean(beanName);
}
protected ActionForward unspecified(ActionMapping mapping, ActionForm form,
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response) {
return mapping.findForward("index");
}
public void setServlet(ActionServlet servlet) {
this.servlet = servlet;
this.ctx = WebApplicationContextUtils.getWebApplicationContext(servlet.getServletContext());
this.userMgr = (UserManager) getBean("userManager");
}
}
二:方法二实现BeanFactoryAware
一定要在spring.xml中加上:
<bean id="serviceLocator" class="项目中ServiceLocator的类路径比如:com.am.oa.commons.service.SpringContextUtil " singleton="true" />
当对serviceLocator实例时就自动设置BeanFactory,以便后来可直接用beanFactory
public class ServiceLocator implements BeanFactoryAware {
private static BeanFactory beanFactory = null;
private static ServiceLocator servlocator = null;
public void setBeanFactory(BeanFactory factory) throws BeansException {
this.beanFactory = factory;
}
public BeanFactory getBeanFactory() {
return beanFactory;
}
public static ServiceLocator getInstance() {
if (servlocator == null)
servlocator = (ServiceLocator) beanFactory.getBean("serviceLocator");
return servlocator;
}
/**
* 根据提供的bean名称得到相应的服务类
* @param servName bean名称
*/
public static Object getService(String servName) {
return beanFactory.getBean(servName);
}
/**
* 根据提供的bean名称得到对应于指定类型的服务类
* @param servName bean名称
* @param clazz 返回的bean类型,若类型不匹配,将抛出异常
*/
public static Object getService(String servName, Class clazz) {
return beanFactory.getBean(servName, clazz);
}
}
action调用:
public class UserAction extends BaseAction implements Action,ModelDriven{
private Users user = new Users();
protected ServiceLocator service = ServiceLocator.getInstance();
UserService userService = (UserService)service.getService("userService");
public String execute() throws Exception {
return SUCCESS;
}
public Object getModel() {
return user;
}
public String getAllUser(){
HttpServletRequest request = ServletActionContext.getRequest();
List ls=userService.LoadAllObject( Users.class );
request.setAttribute("user",ls);
this.setUrl("/yonghu.jsp");
return SUCCESS;
}
}
自己使用:
1.如果applicationContext文件是在src的根目录下:
ApplicationContext apt= new FileSystemXmlApplicationContext("src/applicationContext.xml");
apt.getBean("ID");
可以取得
2.如果文件是在WebRoot/WEB-INF下可以用
ApplicationContext applicationContext= new FileSystemXmlApplicationContext("../applicationContext.xml");
取得
3.如果是在servlet中取可用
ServletContext application = this.getServletContext();
//获取spring上下文信息 为servlet使用
WebApplicationContext wac = WebApplicationContextUtils.getWebApplicationContext(application);
IDicService dicService = (IDicService)wac.getBean("dicService");
在servlet或者filter或者Listener中使用spring的IOC容器的方法是:
WebApplicationContext webApplicationContext = WebApplicationContextUtils.getWebApplicationContext(request.getSession().getServletContext());
由于spring是注入的对象放在ServletContext中的,所以可以直接在ServletContext取出WebApplicationContext 对象:
WebApplicationContext webApplicationContext = (WebApplicationContext) servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
事实上WebApplicationContextUtils.getWebApplicationContext方法就是使用上面的代码实现的,建议使用上面上面的静态方法
注意:在使用webApplicationContext.getBean("ServiceName")的时候,前面强制转化要使用接口,如果使用实现类会报类型转换错误。如:
LUserService userService = (LUserService) webApplicationContext.getBean("userService");
分享到:
相关推荐
SSH是Java Web开发中的一个经典框架组合,全称为Struts2、Spring和Hibernate。这个SSH.rar文件中的SSH-RBAC项目是一个基于这三个框架的实战应用,主要目标是实现基于角色的访问控制(Role-Based Access Control,...
SSH-JPA是一个基于Java Web开发的技术栈,主要包含Spring、Struts2和Hibernate以及Java Persistence API(JPA)这四个核心组件。这个压缩包文件"SSH-JPA.ZIP"提供的内容是一个SSH-JPA的实例,对于初学者或者开发者来...
SSH框架是Java开发中常用的三大框架集成,包括Struts2、Spring和Hibernate。这个"SSH.rar"压缩包提供了一个实际的SSH框架开发实例,对于学习和理解SSH框架的整合及应用有着极大的帮助。 首先,Struts2是MVC(Model-...
在IT行业中,SSH框架是Java Web开发中非常重要的一个组合,它由Spring、Struts和Hibernate三个开源框架组成。这个名为“bbs.rar”的压缩包文件似乎包含了一个基于SSH(Spring、Struts、Hibernate)框架构建的BBS...
SSH(Struts、Spring、Hibernate)是Java开发中常见的三个框架的组合,广泛应用于企业级应用的开发。这个名为"ssh_2.rar"的压缩包文件包含了一个基于SSH的项目源码,适合在MyEclipse集成开发环境中运行和学习。 **...
SSH(Struts+Spring+Hibernate)是Java Web开发中一种常见的技术栈,它结合了三个强大的开源框架:Struts作为表现层,Spring作为业务层控制和依赖注入容器,Hibernate作为持久层 ORM 框架。这个压缩包"ssh.rar"显然...
《跟我学Java Web》通过对Java Web开发中所运用到的各种技术循序渐进地进行讲解,使读者能尽快掌握开发Web应用程序的方法。《跟我学Java Web》内容包括搭建Web开发环境、HTML相关技术基础知识、JavaScript相关技术...
这些方法为Spring容器提供了更灵活的Bean实例化策略,让我们深入了解一下这两种方法。 首先,静态工厂方法配置Bean是通过调用类中静态工厂方法来创建对象的方式。这种方式下,Spring并不直接实例化目标类,而是调用...
SSH是三个Java开发框架的缩写,分别是Spring、Struts和Hibernate,它们共同构建了一个强大的Web应用程序开发框架。Spring提供了依赖注入(DI)和面向切面编程(AOP)功能,用于管理应用程序的复杂性;Struts是MVC...
在IT行业中,SSH(Spring、Hibernate、Struts)是一个经典的Java Web开发框架组合,用于构建高效、可维护的Web应用程序。SSH是三个开源框架的首字母缩写,它们分别是Spring框架、Hibernate持久化框架和Struts MVC...
《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》通过对SSH中的各种技术循序渐进地讲解,使读者尽快掌握开发基于SSH的Web程序的方法。《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+...
SSH是Java Web开发中的一个经典框架组合,包括Struts、Hibernate和Spring三个核心组件。这个框架结合了MVC设计模式、对象关系映射以及依赖注入等技术,为开发者提供了高效且灵活的开发环境。 **Struts** 是一个开源...
《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》通过对SSH中的各种技术循序渐进地讲解,使读者尽快掌握开发基于SSH的Web程序的方法。《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+...
《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》通过对SSH中的各种技术循序渐进地讲解,使读者尽快掌握开发基于SSH的Web程序的方法。《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+...
在IT行业中,SSH(Spring、Struts2、Hibernate)是一个常见的企业级Web应用程序开发框架组合。这个框架集合了Spring的全面控制反转(IoC)和面向切面编程(AOP)、Struts2的MVC设计模式以及Hibernate的对象关系映射...
《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》通过对SSH中的各种技术循序渐进地讲解,使读者尽快掌握开发基于SSH的Web程序的方法。《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+...
SSH(Spring、Struts、Hibernate)是Java开发中的经典MVC(Model-View-Controller)框架组合。Spring提供了依赖注入和面向切面编程,Struts处理用户交互,而Hibernate则负责数据库操作。在SSH架构中添加Web服务,...
当我们谈论"SSH笔记-bean的作用域"时,这里SSH指的是Spring、Struts和Hibernate这三大Java Web开发框架的缩写,但具体讨论的是Spring框架中的内容。 在Spring 4中,Bean的作用域有以下几种: 1. **单例(Singleton...
SSH(Struts2 + Spring + Hibernate)是Java Web开发中常见的三大开源框架集成,它们分别负责MVC模式中的展示层、业务层和数据持久化层。本实例将带你深入理解SSH框架的集成与应用,特别适合初学者进行学习。 ### 1...
《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》通过对SSH中的各种技术循序渐进地讲解,使读者尽快掌握开发基于SSH的Web程序的方法。《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+...