spring介绍(二)

2014-11-24 10:29:08 · 作者: · 浏览: 1
pg
特点:将Service,DAO组件都交给Spring容器管理.Action交给StrutsSpringObjectFactory创建,并且利用spring容器中的Bean对象给Action属性注入.默认按名称匹配原则注入.
1)在web.xml中配置ContextLoaderListener(参考整合方法一)
2)引入了Struts2和Spring整合的开发包.
注意:在编写Action组件时,如果某个属性需要使用Spring容器Bean对象,该属性名要与Spring容器中元素的id值保持一致,因为默认是按名称匹配原则注入.如果名称不一致还要注入,可以修改default.properties中的参数设置,改为按类型匹配注入.在struts.xml中添加以下定义
value="type"/>
2.Spring的事务管理
1)编程式事务管理方式(基于编码实现,了解)
public Object someServiceMethod() {
return transactionTemplate.execute(
new TransactionCallback() {
// the code in this method executes in a transactional context
public Object doInTransaction(TransactionStatus status) {
updateOperation1();
return resultOfUpdateOperation2();
}
});
}


2)声明式事务管理方式(基于配置实现,推荐使用)
a.首先定义一个事务管理bean
jdbc访问数据库的事务管理bean,(需要注入dataSource):
org.springframework.jdbc.datasource.DataSourceTransactionManager
hibernate访问数据库的事务管理bean(需要注入sessionFactory):
org.springframework.orm.hibernate3.HibernateTransactionManager
b.引入tx命名空间,定义事务管理通知



......


c.添加aop配置,将事务通知切入到目标对象

expression="within(com.tarena.dao.impl.*)"/>

pointcut-ref="daocut"/>


Spring中常用事务类型:
REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
SUPPORTS--支持当前事务,如果当前没有事务,就以非事务方式执行。
MANDATORY--支持当前事务,如果当前没有事务,就抛出异常。
REQUIRES_NEW--新建事务,如果当前存在事务,把当前事务挂起。
NOT_SUPPORTED--以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
NEVER--以非事务方式执行,如果当前存在事务,则抛出异常。
NESTED--如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则进行与REQUIRED类似的操作。
拥有多个可以回滚的保存点,内部回滚不会对外部事务产生影响。只对DataSourcManager有效


3.利用注解方式整合ssh2
1)注解方式管理事务
a.在Spring容器配置中,添加以下配置,启用事务注解

transaction-manager="txManager"/>
b.在目标对象类定义或方法定义前,使用@Transactional
2)组件自动扫描功能

@Repository,@Service,@Component,@Controller
@Resource,@AutoWired
3)AOP注解
aspectj-autoproxy/>
@Aspect,@PointCut,@Around,@AfterThrowing等
4)Spring配置文件可以拆成若干个.例如示例拆成
applicationContext-base.xml
applicationContext-annotation.xml


在web.xml中,定义spring容器实例化部分修改文件引用

contextConfigLocation
classpath:applicationContext-*.xml


*1.SSH2整合关键步骤(重点)
1)客户发请求,请求首先进入Struts2框架
--检查web.xml是否配置Struts2控制器
2)控制器要根据struts.xml进行请求的处理
--检查struts.xml配置文件元素
3)控制器要调用Action对象的execute处理请求
--检查struts-spring-plugin.jar整合插件包是否引入
4)整合插件负责创建Action对象,访问Spring容器,将容器中的Service对象给Action对象注入.
--检查Action对象属性与Spring容器中Service的定义的id是否一致
5)Spring容器负责创建Service对象,将DAO对象给Service注入.
--检查applicationContext.xml容器配置
--检查Service组件的定义,以及注入DAO配置
--检查DAO组件的定义,以及sessionFactory配置
--检查sessionFactory组件定义,以及dataSource配置
6)Spring容器需要在Tomcat启动时创建
--检查web.xml,ContextLoaderLisener的定义.
2.Spring的MVC框架(了解)
1)客户发送*.do请求
2)请求到达web.xml声明的DispatcherServlet控制器
3)控制器调用Spring容器中的HandlerMapping组件处理
4)HandlerMapping负责请求和Controller处理组件的映射
5)控制器调用请求对应的Controller组件,执行约定处理方法.
6)Controller处理完毕,返回ModelAndView组件对象
7)ModelAndView负责封装模型数据(request)和响应视图名
8)控制器调用视图解析器ViewResolver,寻找对应的JSP视图
9)在JSP响应视图中可以利用标签和EL获取模型数据显示.


3.Spring框架的体系结构(了解)
Spring主要由6个模块构成.
a.Core模块:IoC容器,提供IoC控制服务.
b.AOP模块:提供AOP控制服务.
c.DAO模块:提供整合JDBC技术的服务,提供JDBC事务管理
d.ORM模块:提供整合ORM技术的服务,提供事务管理
e.Web模块:提供SpringMVC,整合其他Web框架的服务.
f.JavaEE模块:提供整合JavaEE服务.例如JMS消息服务