bboss 组件容器的使用方法浅析

本文重点介绍bboss 中的4大组件容器的特点及使用方法

[b][size=medium]4大组件容器[/size][/b]
[size=medium][b][1] ApplicationContext[/b][/size]
org.frameworkset.spi.ApplicationContext
包括基本的aop/ioc功能,业务组件、dao组件管理,远程服务,全局属性管理,拦截器,包含声明式事务管理
[size=medium][b][2] WebApplicationContext[/b][/size]org.frameworkset.web.servlet.context.WebApplicationContext
管理所有mvc框架中的控制器,包括基本的aop/ioc功能,业务组件、dao组件管理,不提供远程服务(和远程服务协议包无关联)
[size=medium][b][3] DefaultApplicationContext[/b][/size]org.frameworkset.spi.DefaultApplicationContext
包括基本的aop/ioc功能,业务组件、dao组件管理,不提供远程服务(和远程服务协议包无关联)

[size=medium][b][4] SOAApplicationContext/SOAFileApplicationContext[/b][/size]
org.frameworkset.spi.SOAApplicationContext
org.frameworkset.spi.SOAFileApplicationContext
两个轻量级的ioc容器,包含aop/ioc功能、全局属性管理,业务组件、dao组件管理,不包含远程服务、拦截器、不包含声明式事务管理,是DefaultApplicationContext的子类,二者主要用来实现对象xml序列化功能,前者从xml串中反序列化组件,后者从xml文件中反序列化组件


4大组件容器相对于相同的配置文件都是单实例的,也就是说在应用程序中的任何地方通过以下方法获取到的ioc容器实例都是同一个实例(除了在第一次会加载配置文件并初始化文件中包含的组件外,之后都不会进行初始化加载),而且这些方法是多线程安全的:

WebApplicationContext context = org.frameworkset.web.servlet.support.WebApplicationContextUtils.getWebApplicationContext();//获取mvc容器实例

BaseApplicationContext context = DefaultApplicationContext.getApplicationContext("org/frameworkset/spi/beans/testapplicationcontext.xml");//获取普通ioc容器实例


[b][size=medium]4大组件容器的初始化和操作示例[/size][/b]

本文涉及的组件配置文件如下:
[url=https://github.com/bbossgroups/bbossgroups-3.5/blob/master/bbossaop/test/org/frameworkset/spi/beans/testapplicationcontext.xml]org/frameworkset/spi/beans/testapplicationcontext.xml[/url]
[url=https://github.com/bbossgroups/bbossgroups-3.5/blob/master/bboss-soa/test/org/frameworkset/soa/datasource-sql.xml]org/frameworkset/soa/datasource-sql.xml[/url]

[size=medium][b][1] ApplicationContext初始化和使用示例[/b][/size]
org.frameworkset.spi.ApplicationContext
初始化:
ApplicationContext context = ApplicationContext.getApplicationContext("org/frameworkset/spi/beans/testapplicationcontext.xml");

使用示例:
本地服务组件实例获取方法
RestfulServiceConvertor convertor = context.getTBeanObject("rpc.restful.convertor",RestfulServiceConvertor.class);


远程服务组件实例获取方法(以rmi协议为例,其他协议类似,更多信息参考博客其他文章):
 RestfulServiceConvertor convertor = (RestfulServiceConvertor)context.getBeanObject("(rmi::172.16.17.216:1099)/rpc.restful.convertor");


[size=medium][b][2] WebApplicationContext[/b][/size]
org.frameworkset.web.servlet.context.WebApplicationContext
WebApplicationContext的初始化是在bboss mvc框架启动过程中自动初始化的,你、只需要在web.xml文件中做如下配置即可:
<servlet>
<servlet-name>mvcdispather</servlet-name>
<servlet-class>org.frameworkset.web.servlet.DispatchServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/bboss-*.xml,
/WEB-INF/conf/bboss-*.xml</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>mvcdispather</servlet-name>
<url-pattern>*.page</url-pattern>
</servlet-mapping>


WebApplicationContext容器将会加载contextConfigLocation属性中配置的所有配置文件,形成一个的mvc 框架组件容器。

我们可以在程序这样获取WebApplicationContext容器的实例:

WebApplicationContext context = org.frameworkset.web.servlet.support.WebApplicationContextUtils.getWebApplicationContext();//获取实例

//通过以下方式获取mvc容器中的组件实例方法
DeskTopMenuShorcutManager m = context.getTBeanObject("deskTopMenuShorcutManager", DeskTopMenuShorcutManager.class);


[size=medium][b][3] DefaultApplicationContext[/b][/size]
org.frameworkset.spi.DefaultApplicationContext
DefaultApplicationContext的实例定义和获取组件实例方法为:

BaseApplicationContext context = DefaultApplicationContext.getApplicationContext("org/frameworkset/spi/beans/testapplicationcontext.xml");
RestfulServiceConvertor convertor = context.getTBeanObject("rpc.restful.convertor",RestfulServiceConvertor.class);


[size=medium][b][4] SOAApplicationContext/SOAFileApplicationContext[/b][/size]
org.frameworkset.spi.SOAApplicationContext
org.frameworkset.spi.SOAFileApplicationContext

[b][size=medium][color=darkblue]SOAApplicationContext的实例化和获取组件实例示例代码:[/color][/size][/b]

String content = "<?xml version=\"1.0\" encoding=\"gbk\"?>" +
"<esb>"+
"<call>"+

"<!-- 调度中心需要的数据开始 -->"+

"<property name=\"soamethodcall\" " +
"class=\"org.frameworkset.soa.SOAMethodCall\" "+
"f:requestor=\"requestor\" "+
"f:requestid=\"1000000\" "+
"f:password=\"requestpassword\" "+
"f:encypt=\"encrypt\" "+
"f:encyptalgorithem=\"algorithm\" "+
"f:serviceid=\"hilaryserviceid\" "+
"f:issynchronized=\"true\" >"+
"<!-- 调度中心需要的数据结束 -->"+
"<!-- 调度中心提交给服务提供方的服务方法信息 -->"+
"<property name=\"soamethodinfo\" class=\"org.frameworkset.soa.SOAMethodInfo\" " +
"f:methodName=\"methodname\">"+
"<property name=\"paramTypes\">"+
"<array componentType=\"Class\">"+
"<property >String</property>"+
"<property >String</property>"+
"<property >String[]</property>"+
"</array>"+
"</property>" +
"<property name=\"params\">"+
"<array componentType=\"object\">"+
"<property name=\"condition\">1=1</property>"+
"<property name=\"orderby\">order by ${A}</property>"+
"<property>"+
" <array componentType=\"String\">"+
"<property>A</property>"+
"<property>B</property>"+
"</array>"+
"</property>"+
"</array>"+
"</property>" +
"</property>" +
"</property>"+
"</call>"+
"</esb>";
//从xml字符串实例化SOAApplicationContext对象
SOAApplicationContext context = new SOAApplicationContext(content);
//获取xml串中包含的组件对象实例
SOAMethodCall object = context.getTBeanObject("soamethodcall",SOAMethodCall.class);


[b][size=medium][color=darkblue]SOAFileApplicationContext的实例化和获取组件实例示例代码:[/color][/size][/b]
SOAFileApplicationContext context = new SOAFileApplicationContext("org/frameworkset/soa/datasource-sql.xml");
//获取xml串中包含的组件对象实例
SOAMethodCall object = context.getTBeanObject("soamethodcall",SOAMethodCall.class);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值