private IBudgetPlanManager budgetPlanMan;public void
return instant;
业务层构件一般被节制层构件挪用, 节制层构件以接口的形式声明所需的业务层构件的处事, 由Spring 框架按照gkzfservlet.
<bean id=”myTransactionManager”
Spring 框架提供了基于AOP 技能的事务、日志打点等系统级处事, 只要在XML 文件中举办简朴的设置即可利用, JavaBean构件不需存眷这些处事的详细实现。以打点3.2 节DAO构件中的事务为例, XML 文件可设置如下:
2.3 Aspect 和统一的事务、日志打点
</bean>
class="cn.edu.jxnu.gkzf.bus.BudgetPlanManager">
Public class B implements T{
方法的构件组装机制和基于AOP 技能的事务和日志打点等成果。基于Spring 框架的轻量级J2EE 架构可以或许发挥上述两种架构方案的优势, 制止它们存在的缺陷, 是一种成熟的J2EE 应用开拓方案。
Aspect 是指软件系统中一些贯串全局( cross- cutting) 的特性, 譬喻事务、日志等。面向Aspect 的软件开拓试图将这种特性的实现模块化, 并与其他成果性的实现体分分开来, 利用声明的方法将这些特性插入到系统实现中[2]。
//声明需引入数据会见构件提供的处事
</bean>
public int d( ) ; }
</property>
Public class Business implements T{
4.2 业务层
JdbcTemplate jdbcTemplate=
<bean id="enterpriseDao"
4.1 表示层
class=”org.springframework.aop.framework.ProxyFactoryBean”>
public class BudgetController extends
}
4 基于Spr ing 框架的轻量级J2EE 架构的应用操作基于Spring 框架的轻量级J2EE 架构方案为某省财务厅实现了用款单元对帐系统, 而且使该系统与某省财务厅正在利用的国库会合付出系统举办了乐成的集成。单元对帐系统的总体布局如图5 所示。
}
new JdbcTemplate( dataSource) ;
[3] 阎宏.Java 与设计模式[M].北京: 电子家产出书社, 2002.
传统的J2EE 架构方案回收带长途接口的Session Bean 实现业务层构件, 用Entity Bean 实现数据会见层构件[9]。该架构方案大量利用EJB 构件, 可以或许充实操作EJB 容器( 譬喻:Weblogic)提供的漫衍式处理惩罚、构件定位、统一的事务和安详处事等, 然而EJB 构件却存在着巨大度高, 开拓效率低; 难以举办单位测试; 数据库会收效率低等问题[6, 7]。普通的轻量级J2EE 架构方案用JavaBean 构件代替了传统架构中的重量级EJB 构件, 很洪流平上提高了构件开拓和构件的数据库会收效率。可是该架构过于简化, 缺乏支持JavaBean 构件运行的容器, 构件需自行办理构件组装, 事务、日志、安详打点等问题。
该架构方案中, 构件组装事情由Spring 框架完成, 构件之间的险些零耦合, 以3.2 节中的业务层构件和数据会见层构件的组装为例:
<bean id=”C”class=”C”> </bean>
?}
当类包括它所实现的接口以及它所期望的其他类接口的显式说明的环境下, 可以把类当作构件[11]。思量如下几个构件和接口的界说:
Final List products=new ArrayList( ) ;
<ref bean=”C”/>
throws SQLException{
</servlet>
Product product=new Product( ) ;
操作JdbcTemlate 模板, 只需提供数据源, 就可以简捷地完成各类查询和更新等数据操纵。
</property>
“年度预算”成果的页面构件和Servlet 节制构件的干系如下所示:
public List query( ) {
参考文献:
public list query( ) {
SQL 的查询语句; }
}
本文先容Spring 框架的体系布局, 将基于Spring 框架的J2EE 架构方案与其他几种J2EE 架构举办比拟阐明, 最后给出一个运用该架构方案办理的实例。
该层由JSP 页面层和Servlet 节制层构成。JSP 页面用于将数据显示在欣赏器中, Servlet 构件接管用户请求, 团结业务构件处理惩罚用户请求后, 将功效返回JSP 页面。
3.2 普通的轻量级J2EE 架构
return DAi.query( ) ; }
Business 构件要与DAO 构件组装, 就必需在Business 构件中声明对DAO 构件的引用, 彼此之间耦合细密。
</bean>
[2] 梅宏, 陈峰, 冯耀东, 等.ABC: 基于体系布局、面向构件的软件开拓要领[J].软件学报, 2003, 14( 4) .
系统总体上呈正交化体系布局, 从J2EE 类型的技能角度出发, 将系统在横向上分别为表示层( 包罗JSP 页面层和Servlet 节制层) 、业务层、数据会见层; 从包括的成果角度出发,系统在纵向上分别为系统派别、年度预算、直接付出查对、授权付出查对。以“年度预算”成果为例举办说明。
}
Public class C implements Ainterface{
传统J2EE 架构如图2[9]所示, 包括运行于客户端的应用措施和Applet, 以及运行于处事器端Web 容器中的表示层构件Servlet 和JavaServerPages( JSP) , EJB 容器中的业务处事层构件会话EJB, 数据会见层构件实体EJB, 动静驱动EJB。
Public class DAO implements DAinterface{
然而, EJB 是包括漫衍式处理惩罚, 数据耐久化等浩瀚技能的重量级构件。一方面, EJB 十分巨大、开拓效率低、难以举办单位测试; 另一方面, 实体EJB 的数据会收效率很低, 将直接影响整个系统的运行机能。研究数据[6]表白, 直接会见实体EJB 和用会话Bean 封装实体Bean 的数据会收效率远低于用会话Bean 封装JavaBean 的数据会收效率。
</bean>
</bean>
</bean>
Spring 框架将按照XML 设置文件为业务构件Business 提供数据会见构件DAO 的引用, Business 构件只需袒露相应的bean 属性DAi, 不需要对详细的DAO 构件举办声明。
}
Public interface Ai{
setIBudgetPlanManager( IBudgetPlanManager bdm) {this.budgetPlan-Man=bdm;
jdbcTemplate.query(
private Ainterface Ai;
其次, 没有事务打点、日志等民众的系统级处事的支持,JavaBean 构件在存眷详细业务的同时, 还需要存眷上述系统级的处事;
Spring 框架体系布局如图1 所示[10]。Spring core 包是整个框架的基本, 它提供了基于依赖注入技能的构件组装机制;Spring DAO 包提供了一系列的数据库会见节制东西, 免除了繁琐的数据库会见节制和异常处理惩罚的事情。Spring ORM包答允措施设计人员将风行的Hibernate、JDO、iBatis 等工具干系映射东西集成到现有系统中。Spring AOP 包实现了面向方面编程的支持, 可觉得构件提供统一的事务、日志、安详打点等处事。Spring Web MVC 包提供了对基于模子- 视图- 节制器模式的Web 应用措施开拓的支持。
假设B 构件依赖于C 构件, 则用XML 界说的设置文件如下所示:
</property>
数据会见层构件完成整个应用系统数据的耐久化存储, 需要具备较高的处理惩罚机能和安详保障机制。回收实体EJB 实现该层构件难以满意处理惩罚机能的要求, 在JavaBean 中利用JDBC 会见数据库需要举办繁琐的异常处理惩罚编码事情。
构件B 实现接口T, 期望从其他构件获取的处事在接口Ainterface 中界说。构件C 和D 实现了接口Ainterface, 可觉得构件B 提供处事, 即构件B 可以依赖于C 或D 构件。
public void setEnterpriseDao ( IEnterpriseDao epd) {this.enterpriseDao=epd;
2.1 基于依赖注入技能的构件组装
</bean>
<property name="enterpriseDao">
Spring 框架通过模板类JdbcTemplate 为数据会见层构件提供了便利的实现途径, 以查询为例:
<ref bean="dataSource"/>
gkzf- servlet.XML 中界说了节制层构件要挪用的业务构件: BudgetPlanManager
}
[4] Deitel H M, Deitel P J.高级Java 2 大学教程[M].钱方, 梅皓, 译.北京: 电子家产出书社, 2003.
4.3 数据会见层
<property name=”interceptorNames”>
?}
基于依赖注入技能的构件组装是Spring 框架的技能焦点和奇特之处, 它是指构件之间的依赖干系( 即构件间的挪用干系) 用XML 设置文件描写; 在系统运行时, 构件容器按照XML文件的描写完成构件组装。
class = ”org.springframework.transaction.interceptor.TransactionInterceptor”>
事务拦截器myTransactionInterceptor 在DAO 构件的要领执行之前启动myTransactionManager 打点的事务, 在要领执行完毕后再由myTransactionManager 提交可能回滚事务, DAO 构件自己不需要编写事务处理惩罚代码。
class="cn.edu.jxnu.gkzf.web.BudgetController">
基于Spring 框架的轻量级J2EE 架构还不能直接办理构件间长途会见( 要通过长途会话Bean 封装JavaBean 实现) 等问题, 可是这并不会影响它逐渐成为一种成熟的J2EE 架构方案。
</bean>
上述XML 界说了一个名为gkzf 的DispatchServlet。它按照在gkzf- servlet.xml( 该XML 文件是整个系统的设置文件, 界说了页面构件与节制构件、节制构件与业务构件和业务构件与数据会见构件间的对应干系) 中界说的页面构件与Servlet 节制构件的对应干系, 将请求转发到相应的节制构件举办处理惩罚。
<ref bean="enterpriseDao"/>
计较机工程与应用, 2004, 40( 14) : 129- 131.
<servlet>
<bean id=”D”class=”D”> </bean>
Public class Business implements T{
</property>
3.1 传统的J2EE 架构方案
}}) ;
<bean id="budgetController"
<bean id=”myTransactionInterceptor”
该架构方案用轻量级的JavaBean 构件代替了传统架构中的重量级EJB 构件, 如图3:表示层构件JSP 和Servlet 认真接管用户请求, 并交给业务构件处理惩罚; 业务构件对数据库的会见将发给数据会见构件,由数据会见构件完成对数据库的增、删、查询等详细操纵。
<property name=”transactionManager”>
gkzf- servlet.xml 中界说了业务层构件要挪用的数据会见构件: EnterpriseDaoJdbc
</property>
当应用措施需要会见另一个差异的数据库时, 只要改变gkzf- servlet.xml 中的设置, 将数据会见构件指定为新构件即可, 无需修改业务层构件。
springframework.web.servlet.DispatcherServlet</servlet- class>
摘要: 公道的J2EE 架构设计方案对J2EE 应用系统的开拓至关重要。Spring 框架包括依赖注入方法的构件组装机制、统一的事务和日志打点处事等, 为搭建轻量级的J2EE 架构提供了有力的支持。先容Spring 框架的体系布局, 将基于Spring 框架的J2EE 架构与其他几种J2EE 架构举办比拟阐明, 最后给出一个运用该架构方案办理的实例。
<ref bean="budgetPlanMan"/>
Spring 提供了通用的数据库会见异常体系, 用统一的模板( JdbcTemplate 模板) 机制办理了开闭毗连, 处理惩罚异常等问题。
依赖注入技能将构件组装任务交给构件容器完成, 显著地低落了构件之间的耦合水平, 提高了系统的可维护性。
public int d( ) {
</property>
private DAinterface DAi;
<props>
<property name="dataSource">
}
class = "org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
Budget.jsp 的请求将被映射到名为BudgetController 的节制构件举办处理惩罚。
[5] 陆侥幸, 郁洲, 阮永良, 等.J2EE 平台上MVC 设计模式的研究与实现[J].计较机应用研究, 2003.
用户与欣赏器交互的请求首先发送到DispatchServlet 中,DispatchServlet 主要用于分发请求, 它界说在web.xml 中, 如下所示:
<prop key="/Budget.jsp">BudgetController</prop>
3 几种J2EE 架构方案的较量
class="cn.edu.jxnu.ainet.gkzf.bus.BudgetPlanManager">
Spring 框架是Rod Johnson、Juergen Hoeller 等开拓的, 用于支持JavaBean 构件运行的容器。该框架提供了依赖注入[7, 8]
product.SetName( rs.getString(“name”) )products.add( product) ;
class="cn.edu.jxnu.gkzf.db.jdbc.EnterpriseDaoJdbc">
MultiActionController {
数据会见构件只需为JdbcTemplate 提供数据源data-Source, 就能完成查询、更新等操纵, 免除了成立和封锁数据毗连、数据会见异常处理惩罚等繁琐的事情。
Spring 框架集成了事务、日志等民众处事( 答允自界说其他处事) , 可以或许将这些Aspect 浸染于应用系统中。Aspect 凡是以雷同于普通构件的方法在XML 文件中设置。
Spring 框架为JavaBean 构件提供了构件组装、统一的事务和日志打点、数据会见支持等处事, 是支持JavaBean 构件运行的容器( 雷同于支持EJB 运行的EJB 容器) 。
return Ai.d( ) ; }
[1] Perrone P J.J2EE 构建企业系统专家级办理方案[M].张志伟, 谭郁松, 张明杰, 译.北京: 清华大学出书社, 2001.
<property name=”Ai”>
public list query( ) {
EJB 是传统J2EE 架构的主要构件, EJB 容器为EJB 构件提供了生命周期打点、基于JNDI 的构件定位和统一的事务打点、漫衍式处理惩罚等处事, 使EJB 构件可以存眷于详细的业务问题。
<bean id="urlMapping"
<bean id=”DAOTarget”class=”DAO”></bean>
this.Ai=Ai; }
<value>myTransactionInterceptor, DAOTarget</value>
传统J2EE 架构较量合用于各个业务构件漫衍在差异的处事器中, 构件之间需要通过长途漫衍式操纵举办关联可能构件间需要大量利用异步动静通讯的应用系统中; 不合用于构件会合在同一处事器, 不需要漫衍式处理惩罚, 对系统运行机能要求高的系统。
2 Spr ing 框架体系布局
<bean id=”B”class=”B”>
public void setAi( Ainterface Ai) {
};
<bean id="budgetPlanMan"
“select pr_id, pr_name from product”, new RowCallbackHandler( ) {public void processRow( ResultSet rs)
product.SetId( rs.getInt(“id”) ) ;
Public class D implements Ainterface{
instant=new DAO( ) ;
}
public synchronized static DAO getInstant( ) {if( instant==null) {
</beans>
2.2 Spr ing 框架对数据会见层构件的支持
private DAinterface DAi=DAO.getInstant( ) ;public List query( ) {
3.3 基于Spr ing 框架的轻量级J2EE 架构
<ref bean=”myTransactionManager”/>
<beans>
<servlet - name >gkzf </servlet - name > <servlet - class >org.
}
xml 中的设置实例化业务层构件( BudgetPlanManager) ,并注入到节制层构件( BudgetController) 中, 如下所示:
this.DAi=DAi; }
该架构中的JavaBean 构件有较高的设计开拓和数据会收效率, 可以或许担保整个系统运行机能。可是该架构过于简化, 缺乏支持JavaBean 构件运行的容器, 存在下列问题:
<property name="budgetPlanManager">
class="cn.edu.jxnu.gkzf.web.BudgetController"/>
<bean id="budgetPlanMan"
<bean id=" BudgetController"
Public class DAO implements DAinterface{
private IEnterpriseDao enterpriseDao;
要害词: Spring 框架; J2EE; 依赖注入; 轻量级1 引言
[6] 林建, 董亚波, 朱淼良.基于J2EE 的数据会见技能设计模式研究[J].
J2EE 平台类型是SUN 公司拟定的, 基于Java 技能的漫衍式构件运行平台类型, 在此平台上可以利便、快速地成立融合Internet 技能的多层布局的漫衍式企业应用[1]。切合J2EE 类型的系统架构包括三种焦点构件:( 1) 业务处事层构件, 完成详细业务逻辑的处理惩罚, 并为表示层构件提供处事;( 2) 表示层构件,实现接管用户请求, 返回处理惩罚功效的人机界面;( 3) 数据会见层构件, 通过会见靠山数据库完成系统数据的耐久化存储。
public class BudgetPlanManager {
基于Spring 框架的轻量级J2EE 架构主要利用设计简朴、数据库会收效率高的JavaBean 构件, 办理了传统J2EE 架构中, EJB 构件开举事度大、数据会收效率低、难以举办单位测试等问题。同时, Spring 框架作为JavaBean 构件运行的容器, 提供依赖注入方法的构件组装机制、统一的事务和日志打点处事、简捷的数据会见等成果, 有效地补充了普通轻量级架构存在的构件之间耦合度高, 缺乏统一的事务和日志打点处事等不敷。
首先, 构件组装要由构件自身完成, 构件之间的耦合水平高, 以业务层构件Business 和数据会见层构件DAO 间的耦合为例:
class=”org.springframework.transaction.jta.JtaTransactionManager”>
5 总结
</props>
数据会见层构件由业务层构件挪用, Spring 框架将按照gkzf- servlet.xml 中的设置, 将数据会见层构件( EnterpriseDao-Jdbc) 注入到业务构件( BudgetPlanManager) 中, 如下所示:
SQL 的查询语句; }
return DAi.query( ) ; }
</property>
<property name="mappings">
系统运行时, 将由Spring 框架实例化C 构件, 然后注入到B 构件的Ai 属性中, 完成B 和C 构件的组装。假如软件需求改观, B 构件需依赖于D 构件, 则只需将设置文件中的<refbean=”C”/>项目, 改为<ref bean=”D”/>。
public void setDAi( DAinterface DAi) {
}
最后, 轻量级的JavaBean 不具备EJB 构件的漫衍式处理惩罚的本领, 不能办理业务构件在差异处事器中漫衍的问题。
<bean id=”DAO”
14( 4) . [3] 阎宏.Java 与设毕业论文计模式[M].北京: 电子工业出版社
毕业论文库:计算机 时间:2016-10-16 点击:
次