Xbean介绍与Spring的整合
2016-03-10 11:06
666 查看
前言
最近在编写一个校园框架,很多的配置需要使用XML文件去定义。例如:我要创建某一个bean实体,虽然是可以用一般的bean去定义,但是Spring中bean的定义有时候非常的不方便。 刚好在公司的wiki中发现一个xbean的开源程序,听说很久已经不更新了,在百度中能找到的博客也不多。也没有对Spring整合的说明,花了一点时间去研究了一下xbean,顺便整合到Spring中。在这里写一篇博客记录记录。
xbean一些简单的介绍我决定交给另外两篇对我帮助很大的博客,不重复造轮子了,读这篇博客前,最好先了解另外两篇对xbean作介绍的文章。
Apache XBean 简单介绍
Geronimo XBean
关键代码分析如下面的代码:xbean扩展了Spring原生的XmlWebApplicationContext。也就是说,要顺利地在Spring中使用xbean对xml文件作解析,现在在web.xml重新定义XmlWebApplication的类。
由于这是由xbean扩展下来的,所以,这个类一定也完全可以替代原有的XmWebApplication,根据设计模式的里氏替换原则得知。
package org.apache.xbean.spring.context; import java.io.IOException; ....省略n多个class /* * xbean扩展了Spring原生的XmlWebApplicationContext */ public class XmlWebApplicationContext extends org.springframework.web.context.support.XmlWebApplicationContext
在web.xml文件中更换contextClass解析器
<context-param> <param-name>contextClass</param-name> <param-value> org.apache.xbean.spring.context.XmlWebApplicationContext </param-value> </context-param>
至此,xbean已经可以在Spring项目中跑起来了。
一个简单的测试
在这里,我们可以做一个简单的测试。我们编写一个实现BeanPostProcessor接口的类求拦截每一个bean的生成,假如检测到xbean生成的bean(我们可以指定xbean生成的LoginUser类),我们打印出来。
/** * declaration: * 用于测试Xbean工作效果的一个processer * author wenkangqiang * date 2016年3月5日 */ public class XbeanTestProcesser implements BeanPostProcessor { @Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { if (bean instanceof LoginUser){ System.out.println("从xml文件中读取到bean" + ((LoginUser)bean).toString()); } return bean; } @Override public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { // TODO Auto-generated method stub return bean; } }
在Spring的ApplicationContext.xml中配置一下这个bean。然后它就会工作了,有关BeanPostProcessor接口的知识可以自己了解一下。可以理解为bean生成过程中的拦截器。
<bean class="com.cn.qpm.framework.processor.XbeanTestProcesser" />
应用上Xbean的xml文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://xbean.apache.org/schemas/spring/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:qpm="http://model.usermanage.qpm.cn.com/loginuser" xsi:schemaLocation="http://xbean.apache.org/schemas/spring/1.0 classpath:/org/apache/xbean/spring/spring-beans.xsd"> <qpm:LoginUser id="testuser123" userid="123" name="wenkangqiang" email="945766863@qq.com" password="55555" authority="10"></qpm:LoginUser> <qpm:LoginUser id="testuser123455" userid="234" name="wenkangqiang222"></qpm:LoginUser> </beans>
效果
测试的效果:每一个生成的LoginUser都可以顺利地被打印出来。大家可以自己进行一下测试。
后记
xbean对于我们进行自定义框架的时候是非常有用的,结合我另外一篇博客去进行实现时,这样的开发模式是我觉得还是挺好的。这样我们可以在xml基础上作更多的扩展。
《Spring项目中对XML文件热加载代码实现》
相关文章推荐
- Java内存回收机制
- java的反射机制浅谈(转)
- Java WebService 简单实例
- spring配置文件详解
- Spring 学习笔记
- Java HashMap工作原理及实现
- [置顶] 学习JAVA之路(一、概述)
- java wait 与 notify sleep
- JAVA开发Web Service几种框架介绍
- struts2学习笔记(5)---自己定义拦截器
- Java newInstance(); 报 java.lang.NullPointerException 异常
- java 异步请求转同步结果
- java中数组是不是对象?
- Java的string类常量池及不可变性
- Java中ArrayList和LinkedList区别
- 六 、关于win10配置java环境 javac不能运行
- struts2 实现图片验证码 jsp annocation
- 命令行打开eclipse
- Java学习之Java中常用对象
- 使用Spring.net中对Ado.net的抽象封装来访问数据库