我的spring 下
来源:互联网 发布:iphone怎么修改mac地址 编辑:程序博客网 时间:2024/05/16 19:32
spring下
目的是帮助我理解关于AOP的一些基本概念
一.概念
1.什么是AOP?
AOP为Aspect-Oriented Programming,意思是面向横切面编程
2.事务
事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。
特性:原子性;一致性;隔离性;持久性。
3.Spring对AOP的支持
Spring中AOP代理由Spring的IOC容器负责生成、管理,其依赖关系也由IOC容器负责管理。
规则
1、默认使用Java动态代理来创建AOP代理,这样就可以为任何接口实例创建代理了
2、当需要代理的类不是代理接口的时候,Spring会切换为使用CGLIB代理,也可强制使用CGLIB
关键点:
代理对象的方法=增强处理+被代理对象的方法。
下面给出一个Spring AOP的.xml文件模板,名字叫做aop.xml,之后的内容都在aop.xml上进行扩展:
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd"></beans>
4.声明式事务的使用:
Spring默认情况下是不支持AOP功能的,如果使用需要引入AspectJ jar包。AspectJ是专门来做AOP操作的框架,Spring可以利用AspectJ进行AOP编程。看一下步骤吧!
1,拷贝相应的jar包:
commons-logging.jar
spring.jar(Spring核心jar包,支持IoC的jar包)
SPRING_HOME\lib\aspectj\aspectjrt.jar
SPRING_HOME\lib\aspectj\aspectjweaver.jar(支持AOP的jar包)
SPRING_HOME\lib\cglib\cglib-nodep-2.1_3.jar(支持继承动态的jar包)
2,拷入的核心配置文件applicationContext.xml需要加入增加命名空间和约束文件:
<beans...xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="...http://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
3,核心配置文件中启用AOP功能:
<aop:aspectj-autoproxy/>
4, 定义目标类:
目标类可以有接口,如果有接口Spring使用jdk动态代理产生代理对象,完成功能扩展。也可以没有接口,如果没有接口,Spring使用cglib代理产生代理对象,完成功能扩展。
5,定义扩展对象,只是普通的javabean类,里边定义我们扩展的方法即可!
6,在核心配置文件中配置目标对象和代理对象,还有就是两者之间的关系,例如:
<!-- 声明目标类对象 --> <bean id="targetDao" class="com.ljh.spring.aop.TargetDao"></bean> <!-- 声明扩展类对象,计算方法的执行时间 --> <bean id="timePrint" class="com.ljh.spring.aop.TimePrint"></bean> <!-- 组合目标对象和扩展对象的关系 --> <aop:config> <aop:aspect id="timeAspect" ref="timePrint"> <aop:pointcut expression="execution(public * * (..))" id="timePoincat" isolation="DEFAULT" rollback-for="java.lang.Exception"/> <aop:before method="printStartTime" pointcut-ref="timePoincat" isolation="DEFAULT" rollback-for="java.lang.Exception"/> <aop:after method="printEndTime" pointcut-ref="timePoincat" isolation="DEFAULT" rollback-for="java.lang.Exception"/> </aop:aspect> </aop:config>
基于Spring的AOP简单实现
- 我的spring 下
- 简单诠释下我所了解的spring架构
- 我眼中的Spring
- 我的集成spring
- 我的spring配置文件。
- 我的spring 上
- 记录下我在用idea搭建一个spring项目的问题
- spring事务,我的理解
- spring ioc我的理解
- 转贴:我眼中的Spring
- 我的Spring初尝试
- 我的Spring入门Demo
- 我对Spring的理解。
- 我的第一次Spring学习
- Spring给我的启发
- 我的Spring AOP实例
- spring aop 我的理解
- 我眼中的Spring MVC
- 判断日期是否过期,以及根据日期判断周几
- 几大主流视频播放器观看VIP视频
- 《软件测试经验与教训》读书笔记
- 股票、证券等(个人)商业投资
- Maven安装教程、集成到eclipse
- 我的spring 下
- 商业智能BI入门专业词汇(一)
- zoj3953 Intervals 最大不重叠区间加强版 zoj排名第一~
- 一个新的Android Studio 2.3.3可以在稳定的频道中使用。A new Android Studio 2.3.3 is available in the stable channel.
- [数据结构]--关于排序算法的一些参考
- 五大常用算法之五:分支限界法
- 日志类
- css Modules (React)
- Lua中的string库(字符串函数库)总结 投稿:junjie 字体:[增加 减小] 类型:转载 时间:2014-11-20 我要评论 这篇文章主要介绍了Lua中的string库(字符串函数库)总