- 讲师:刘萍萍 / 谢楠
- 课时:160h
- 价格 4580 元
特色双名师解密新课程高频考点,送国家电网教材讲义,助力一次通关
配套通关班送国网在线题库一套
百度广告
Spring2.X下的切面有两种实现方式,一种是以Java文件定义切面(其只是普通的Java类),然后在配置文件中声明定义的切面;另一种是在Java类中引入和AOP相关的元数据(注释)。
先介绍第一种配置方式。需要指出的是,Spring2.X的beans名称空间和Spring1.X有所不同,它采用了Schema而不是DTD(也可采用DTD方式,具体的请参考文档)。还是引入毫无意义的日志切面,定义的切面类LogingAspect
public class LogingAspect { System.err.println(jp.getTarget().getClass()); } |
< bean id = " logAspectTarget " class = " hibernatesample.service.util.LogingAspect " > < aop:config > < aop:pointcut id = " businessService " expression = " execution(* hibernatesample.service.*.*(..)) " /> </ aop:aspect > |
< tx:advice id = " txAdvice " transaction - manager = " transactionManager " > < tx:method name = " get* " read - only = " true " /> < tx:method name = " * " /> </ tx:advice > < aop:pointcut id = " demoServiceMethods " expression = " execution(* hibernatesample.service.*.*(..)) " /> < aop:aspect id = " logAspect " ref = " logAspectTarget " > < aop:after pointcut - ref = " businessService " method = " logMethod " /> </ aop:config > |
|||
< bean id ="accountService" class ="hibernatesample.service.impl.AccountServiceImpl" > </ bean > |
@Aspect
public class LogingAspect { |
< aop:aspect id ="logAspect" ref ="logAspectTarget" > < aop:after pointcut-ref ="businessService" method ="logMethod" /> < bean id ="logAspectTarget" class ="hibernatesample.service.util.LogingAspect" ></ bean > |
如果觉得事务的配置没有使用注释更简洁(我倒不会有这样的想法,毕竟在配置文件中声明的事务只是那么固定的几段,除非作用于类上的事务逻辑上很复杂),也可以使用Spring提供的事务注释作用于类文件上,这可是更细粒度的事务声明了。
坦率的说,由于时间有限,该文写的比较粗糙。对于Spring AOP有兴趣并有疑问的朋友,可以参考Spring的文档,它的文档做的还是不错的。
责编:罗莉
课程专业名称 |
讲师 |
课时 |
查看课程 |
---|
课程专业名称 |
讲师 |
课时 |
查看课程 |
---|
点击加载更多评论>>