最近我我开发的一个系统里边有老的代码, 这些老代码没有使用Spring, 我们准备用Spring改写老代码, 但是写到一半, 发现问题很多,然后我们又不想丢掉我们写好的新代码, 所以我们就需要找到一个方法,使我们能够在老的代码里访问Spring的bean. 我们都知道要访问Spring bean 我们就必须得到一个ApplicationContext 或者 BeanFactory 对象, 而ApplicationContext的BeanFactory 的子类, 拥有更强大的功能,ApplicationContext可以在服务器启动的时候自动实例化所有的bean,而 BeanFactory只有在调用getBean()的时候才去实例化那个bean, 这也是我们为什么要得到一个ApplicationContext对象, 事实上Spring2相关的web应用默认使用的是ApplicationContext对象去实例化bean, 换一句话说, 在服务器启动的时候,Spring容器就已经实例化好了一个ApplicationContext对象,所以我们要在老的代码里尝试去获取这个对象。 但是如何才能得到一个ApplicationContext对象呢?方法很多,最常用的办法就是用 ClassPathXmlApplicationContext, FileSystemClassPathXmlApplicationContext, FileSystemXmlApplicationContext 等对象去加载Spring配置文件,这样做也是可以, 但是在加载Spring配置文件的时候,就会生成一个新的ApplicaitonContext对象而不是Spring容器帮我们生成的哪一个, 这样就产生了冗余, 所以我们在这里不采用这种加载文件的方式,我们使用ApplicationContextAware让Spring容器传递自己生成的 ApplicationContext给我们, 然后我们把这个ApplicationContext设置成一个类的静态变量, 这样我们就随时都可以在老的代码里得到Application的对象了。
ApplicationContextHelper
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
/**
*
* @author MinFei
*/
public class ApplicationContextHelper implements ApplicationContextAware {
private static ApplicationContext appCtx;
/**
* 此方法可以把ApplicationContext对象inject到当前类中作为一个静态成员变量。
* @param applicationContext ApplicationContext 对象.
* @throws BeansException
*/
@Override
public void setApplicationContext( ApplicationContext applicationContext ) throws BeansException {
appCtx = applicationContext;
}
/**
* 这是一个便利的方法,帮助我们快速得到一个BEAN
* @param beanName bean的名字
* @return 返回一个bean对象
*/
public static Object getBean( String beanName ) {
return appCtx.getBean( beanName );
}
}
配置 ApplicationContextHelper
1. <bean id="SpringApplicationContext" class="com.company.helper.ApplicationContextHelper"></bean>
使用这个方法去得到一个bean
BeanExample beanExample= (BeanExample )ApplicationContextHelper.getBean( "beanExample" );
这样我们在老代码里取得了一个Spring配置的对象, 然后我们就可以自由自在的在老代码里边享受Spring提供的功能。
分享到:
相关推荐
在实际操作中,开发者首先需要在Eclipse中创建一个Dynamic Web Project,然后添加必要的库,如Servlet和JSP的API。接着,编写ArtReviewServlet类,继承HttpServlet,重写doGet或doPost方法来处理HTTP请求。可能还...
Spring 是一个开源的轻量级 Java 应用框架,它提供了完整的解决方案来简化企业级应用的开发过程。Spring 主要有以下几个特点: 1. **IoC 控制反转**:Spring 提供了依赖注入(DI)功能,帮助开发者管理对象之间的...
在JavaWeb项目中,JBPM(Business Process Management)是一个强大的工作流管理系统,它允许开发者设计、执行和管理业务流程。本篇文章将详细讲解如何在JavaWeb应用中集成并使用JBPM,以及如何配合JUnit 4进行单元...
Model-View-Controller(模型-视图-控制器)模式在JavaWeb开发中广泛使用,分离业务逻辑、数据处理和用户界面。Servlet作为Controller,处理请求,调用Model进行业务处理,更新数据,然后通过JSP呈现View。 四、...
在本教程中,我们将一起构建一个完整的Java Web项目,这个项目是基于Servlet和JSP技术,结合MyEclipse集成开发环境以及MySQL数据库来实现的。这个过程将涵盖多个关键知识点,对于初学者来说是非常有益的学习资源。 ...
Spring框架是一个全面的企业级应用开发框架,包括IOC(Inversion of Control,控制反转)容器、AOP(Aspect-Oriented Programming,面向切面编程)、MVC(Model-View-Controller,模型-视图-控制器)模式以及数据...
在JavaWeb开发中,常用的框架有Spring Boot、Spring MVC、Struts2、Hibernate等,它们简化了开发流程,提供了丰富的功能,如依赖注入、数据持久化、安全控制等。同时,企业级应用还会涉及到数据库设计、安全性、性能...
JavaWeb与Maven框架在开发黑马旅游网项目中的应用是一个重要的知识领域,它涉及到Web应用程序的构建、管理和部署。在这个项目中,Maven作为一个强大的项目管理工具,被用来解决依赖管理和构建流程,而JavaWeb技术则...
这是一个基于Java技术栈的通用后台管理系统,主要使用了Spring MVC、Spring、Hibernate、Bootstrap和Maven等技术。这些技术在IT行业中广泛应用于企业级Web应用开发,构建高效、可维护的系统。下面将分别详细解释这些...
通过以上步骤,你已经成功地在Idea中搭建了一个简单的JavaWeb项目,并将其部署在了Tomcat服务器上。这只是JavaWeb开发的起点,实际项目中可能还需要涉及MVC架构、Spring框架、MyBatis持久层框架、数据库连接、安全...
该项目旨在为Java开发者提供一个统一的、高效的接口网关鉴权示例,帮助他们理解和实践API权限管理。 【描述】中提到的"open-api-project"是整个项目的核心,它包含了对开放接口管理和鉴权的实现。"open-api-common...
在JavaWeb中,使用Ajax配合JSON数据格式能实现高效的前后端交互。 9. **安全与认证**:JavaWeb应用的安全性是不容忽视的一环,包括密码加密、防止SQL注入、XSS攻击防护、权限控制等。理解并实施这些安全措施是保障...
【JavaWeb上机练习6.zip】是一个包含JavaWeb开发相关实践操作的压缩文件,由原创作者田超凡创作。在JavaWeb开发中,我们通常会接触到诸如Servlet、JSP、MVC模式、JDBC数据库连接、过滤器、监听器等核心概念。下面将...
在Java毕设项目中,"javaWeb物资管理系统"是一个常见的选题,它涉及到多个JavaWeb技术的应用,旨在实现对物资的入库、出库、库存查询等管理功能。这个项目不仅能够帮助学生巩固JavaWeb编程技能,还能让他们对实际...
【标题】"我的第一个javaweb项目(未优化版本)" 涵盖了初学者在构建基于Java Web的应用程序时可能遇到的关键知识点。在这个项目中,开发者可能使用了Java Servlets、JSP(JavaServer Pages)以及MVC(Model-View-...
SSH是三个Java开发框架的缩写,分别是Spring、Struts和Hibernate,它们共同构建了一个强大的Web应用程序开发框架。Spring提供了依赖注入(DI)和面向切面编程(AOP)功能,用于管理应用程序的复杂性;Struts是MVC...
【标题】"Javaweb项目"涉及到的是Java在Web开发中的应用,主要技术栈包括JSP、Spring、SpringMVC以及Maven。这个项目是一个典型的B/S(Browser/Server,浏览器/服务器)架构的电商系统,对于学习和理解Java Web开发...
这通常在STS的"Preferences"菜单下进行,选择"Java" -> "Installed JREs",然后添加或移除JRE路径,确保开发环境中使用的是期望的JRE版本。 服务器配置也是JavaWeb开发中不可或缺的部分。在STS中,我们可以配置...
JavaWeb是Java平台中的一个关键部分,它允许开发者构建动态、交互式的网页应用。本项目的核心特性可能包括用户登录验证、角色权限管理、项目创建、申报流程跟踪以及数据统计分析等功能。 **技术栈** 1. **Servlet与...
在"myeclipse基本使用"这个文件中,很可能是详细讲述了以上的一些基本操作和流程,包括创建项目、编写代码、部署应用、数据库操作以及使用框架等。"MyEclipse_6使用教程.pdf"可能会更深入地介绍MyEclipse 6版本的...