第六章~七章

第六章
1 使用p命名空间实现实现注入
Spring配置文件从2.0版本开始采用schema形式,使用不同的命名空间管理不同类型的配置使得配置文件更具扩展性。例如,我们曾使用aop命名空间下的标签实现织入切面的功能,而在本章及之后的章节的学习中,我们还会接触更多其他的命名空间下的配置。
2其他增强类型
Spring支持多种增强类型除了之前介绍过的前置增强和后置增强,这里再补充介绍几个常用的增强类型
(1) 异常抛出增强
异常抛出增强的特点是在目标方法抛出异常时织人增强处理。使用异常抛出增强,可以为各功能模块提供统一的,可拔插的异常处理方案。
(2) 最终增强
最终增强的特点是无论方法抛出异常还是正常退出,该增强都会得到执行,类似于异常处理机制中finally块的作用,一般用于释放资源。使用最终增强,就可以为各功能模块提供统一的,可拔插的处理方案
(3) 环绕增强
环绕增强在目标方法的前都可以织入增强处理,环绕增强是功能最强大的增强处理,Spring吧目标方法的控制权全部交给了它,在环绕增强处理中,可以获取或修改目标方法的参数,返回值可以对它进行异常处理,甚至可以决定目标施放被执行。
3. Spring的切面配置小结
Spring在同一个问题是提供了多种灵活选择,反倒容易令初学者感到迷惑,我们应该根据项目的具体情况做出选择,如果项目采用JDK5.0以上版本,可以考虑使用@AsoectJ注解方式,减少配置的工作量;如果不愿意使用注解或项目采用JDK版本较低而无法使用注解,则可以选择使用《aop:aspect》配合普通JavaBean的形式。
本章总结

Spring提供了设值注入、构造注入等依赖注入方式
使用p命名空间可以简化属性注构造注入的配置。

Spring 提供的增强处理类型包括后置增强、异常抛出增强、环绕增强、最终增强等。

通过Schema形式将P0J0的方法配置成切面,所用标签包括aop aspecs. <pb<00 ahe euning>. . . <aop ; ate>等

用来定义Bean组件的注解包括@Component. @Repository、 @Service、 @Contoler,

Bean 组件的装配可以通过@Autowired. @Qualifier 以及@Resource实现。

在Spin配置文件中使用<context component- -scan>元素扫描包含注解的类,完成初始化

使用注解方式定义切面可以简化配置工作, 常用注解有@Aspect. @Before. Ahlefe@Around. @Ate Trowing. @Ater 等。

通过在配置文件中添加<aop:aspectj-autoproxy>元素,就可以启用对于@AspectJ注解的支持。
第七章
1.Spring对MyBatis的整合思路
作为Bean容器,Spring框架提供了loc机制,可以接管所有组件的创建工作并进行依赖管理因整合的主要工作就是把MyBatis框架的使用变得更加方便和简单
2注入映射器实现
在上面的DAO实现中使用Sssioteoptt的方法,且如果命名空间发生变化,会导致很多地方需要修改不只统拉式比较容易产生错误,如果存在拼写错误, 在编译期无法识别,不易维护。都是采用字符串来指定快射项,这种方只能等到运行的时候才能发现。而Manis中可以使用scn的opeClc. y方法根据指定的读射器和读射文件直接生成实现类。这样不必自行编写映射器的实现类,就可以谓用映躬器的方法进行功能实现,
SlsesionTemplate作为SglSession接口的实现,自然也具备 相同作用的geMapep方法实现但在集成环境中,直接在代码中使用getMapoer( )方法并非最佳选择,利用MyBatis Spring 提供的组件,可以不必每次调用getMapper( )方法,而是通过配置的方式直接为业务对象注入映射器实现,无需额外的编码。对于不包含其他非MyBatis的工作的数据访问操作这是首选的做法。
3使用注解实现声明试事务处理
Spring还支持使用注释配置声明式事务,所使用的注解是@Transactional
首先仍然需要在Spring配置文件中配置事务务管理类,并添加对注释配置的事务的支持,代码

  1. 事务传播设置是 PROPAGATION_REQULRED
  2. 事务隔离级别是 ISOLATION_DEFAULT
  3. 事务是读/写。
  4. 事务超时默认是依赖于事务系统的,或者事务超时没有被支持
  5. 如何RuntimeException将触发事务回滚,但是如何chechedExcepttion将不触发事务回滚。
    属性 类型 说明
    Propagation 枚举型:Propagation 可选的传播性设置。使用举例:
    aTasaciona(propagation Popation RFOUIRES NEW)
    Isolation 枚举型:Isolation 可选的隔离性级别。使用举例:TasacinaliolationoslationREAD COMMITED)
    readOnly 布尔型 是否为只读型事务。使用举例:@Transactional(readOnly-true)
    timcout int型(以秒为单位) 事务超时。使用举例: @Transactionaltimeout-10)
    rollbackFor 一组 Class类的实例,必须是Throwable的子类 一组异常类, 遇到时必须进行回滚。使用举例:@TramsactionalrollbackFor- {SQL Exccption.class),多个异常可用英文逗号隔开
    rollbackForClassName -组Class类的名称,必须是Throwable的子类 一组异常类名, 遇到时必须进行回滚。举例:@TransactioalrollbackForClassName= “SQLException”}),多个异常可用英文逗号隔开
    noRollbackFor 组Class 类的实例,必须是Throwable的子类 一组异常类, 遇到时必须不同滚

noRollbackForClassName 组Class 类的名称,必须是Throwable的子类 一组异常类名,遇到时必须不回滚

本章总结
MyBatis-Spring提供了SqlSessionTemplate模板类操作数据库,常用的方法有selectList()、insert()、update()等,使用getMapper(ClassType)可以直接访问接口实例,能够减少错误的发生,另外可以不用写DAO的实现类
使用MapperFactorBean能够以配置的方式得到映射器实现,简化DAO开发。前提条件是保证映射命名空间名和接口的名称相同,以及映射元素的id和接口方法相同
使用MapperScannerConfigurer可以递归扫描basePackage所指定的包下的所有接口类, 在Service中可以使用@Autowired或Resource注解注入这些映射接口的Bean
Spring和Mapper整合可以采用Spring的事务管理,包括使用XML和注解配置事务管理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值