切面注解:1、在配置文件中开启切面注解<aop:aspecttj-autoproxy/>
2、在切面的类上配置切入点标签 @Aspect
法一:1、在类中写一个切入点方法,并添加切入点标签 @Pointcut(value=“切入点表达式”)【此方式能做到切入点的重用】切入点表达式相当于过滤器
2、写一个通知里,并在通知上添加相应的注解并与切入点关联@Around(value=“切入点的方法名pointcut()”)。
法二:无需写pointcut()方法,直接写对应的通知,在通知上写上切入点表达式。
4、当通知有返回值时,在切入点函数时也需要写这个返回值,但是如果是写法2的话就不需要写。
环绕通知的JoinPoint.proceed()方法的作用:
作用:执行下一个通知,如果没有下一个通知则执行目标方法。
意义:通知的嵌套,目标方法只执行一次。
Spring与JDBC的整合
1、导入相关jar包(数据库包和c3p0的包)
2、配置文件(Spring配置文件和数据库的配置文件)的配置和。
<bean id=”dataSource” class=”连接池的去路径名”>
<propertry name=”数据库连接的配置”>
<bean id=”jdbcTemplate” class=”数据库模板的全路径名”>
<property name=”dataSource”>
3、调用数据库模板的相应方法。jdbcTemplate.update
.query
练习题:在
JDBCTemplate模板
配置文件配置
引入template
Spring的声明式的事务处理(整个是一个aop的过程)
1.导入jar包(事务处理的包 tx)
2.修改配置文件的头(加入tx)
3.配置事务管理器,将来统一管理数据库中的事务,需要注入DataSource
4.配置事务通知
5.Aop的配置
意义:不需手动的维护事务,都交给spring完成。
//引入事务处理
<bean id=”transactionManager” class=”数据源事务处理的包的全名”>
<property name=”数据源的名称” ref=“数据源的ID”>
</bean>
//事务处理的过滤器
<tx:advice transcation-manager=”tanscationmanager” id=“在切面中使用””>
<tx:attribute>
<tx:method method=”add*” propagation=”REQUIRED”/>propagation表示是否需要事务处理 SUPPORTS
</tx:attribute>
</tx:advice>
<aop:config >
<aop:pointcut expression=”切面的过滤器” id=”切面id”>
<aop:advice advice-ref=”将通知引入切面” pointcut-ref=”切面的id”>
</aop:config>
事务的回滚策略:
1、当遇到RuntimeException时,spring默认事务回滚。
2、当遇到检查异常时,spring默认事务不回滚。当需要改变时在配置文件中tx:method标签中添加一个属性rollback-for=“异常的全名”,表示遇到某种异常回滚。
No-rollback-for=“异常的全名”表示遇到某种异常不回滚。