Xbean介绍与Spring的整合
来源:互联网 发布:重生之美国仓储淘宝王 编辑:程序博客网 时间:2024/04/30 10:38
前言
最近在编写一个校园框架,很多的配置需要使用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文件热加载代码实现》
0 0
- Xbean介绍与Spring的整合
- Spring结合Xbean简化与专业化配置
- Apache XBean 简单介绍
- Spring与BlazeDS的整合之AMF协议介绍(1)
- Spring与BlazeDS的整合之AMF协议介绍(1)
- Spring与BlazeDS的整合之BlazeDS介绍(2)
- Spring与BlazeDS的整合之AMF协议介绍
- spring-boot与mybatis整合优化介绍
- ssh整合:spring与hibernate的整合
- Spring与Hibernate的整合
- osworkflow与spring的整合
- spring与axis的整合
- hibernate与spring的整合
- iBAITS与Spring的整合
- Struts2与Spring的整合
- webwork与spring的整合
- webwork与spring的整合
- spring与hibernate的整合
- asp.net AspNetPager Repeater PagedDataSource 假分页方法适用于小数据量分页
- oracle和mysql在ibatis中对自增ID的控制以及MYSQLLAST_INSERT_ID
- redis使用watch秒杀抢购思路
- String类型转换成数组,并Json形式提交
- 34. Search for a Range
- Xbean介绍与Spring的整合
- 算法复杂度
- Puppet4学习笔记:RHEL7下安装puppet4.3
- 第一次上机
- 算法导论:第9章 中位数和顺序统计量_2最坏情况为线性时间的选择算法
- c++第一次实验
- iPhone 和 iPad 的适配
- Android动画基础
- 适配器模式