以下从E文中摘得:
Common AspectJ annotations :
-
@Before – Run before the method execution
-
@After – Run after the method returned a result
-
@AfterReturning – Run after the method returned a result, intercept the returned result as well.
-
@AfterThrowing – Run after the method throws an exception
-
@Around – Run around the method execution, combine all three advices above.
大致讲了下切面的情况,在这里我举个例子,来说明在使用过程中的调用关系。
1.在配置文件applicationContext.xml:
<bean id="strategyAspect" class="cn.iscas.ac.gz.sems.domain.strategy.aop.ControllorStrategyAspect">
<property name="concentratorDomainService" ref="concentratorDomainService" />
</bean>
2.要切的JAVA类,这里写接口,实现略。
public int turnOnOffLightByTermId(String concentUID, String termUID, String operateMode, boolean isTurnOnLight) throws Exception;
public int turnOnOffLightByGroupId(String concentUID, int GroupId, String operateMode, boolean isTurnOnLight) throws Exception;
public int turnOnOffLightByConcentId(String concentUID, String operateMode, boolean isTurnOnLight) throws Exception;
public int dimmingByTermId(String concentUID,String termUID, int dimmingValue) throws Exception ;
public int dimmingByGroupId(String concentUID,int GroupId, int dimmingValue) throws Exception;
public int dimmingByConcentId(String concentUID, int dimmingValue) throws Exception ;
public int queryLightByTermId(String concentUID, String termUID) throws Exception;
public int queryLightByGroupId(String concentUID, int GroupID) throws Exception;
public int queryLightByConcentId(String concentUID) throws Exception;
3.切面类ControllorStrategyAspect.java
@Aspect
public class ControllorStrategyAspect {
private ConcentratorDomainService concentratorDomainService;
private static final Logger logger = Logger.getLogger(ControllorStrategyAspect.class);
public ConcentratorDomainService getConcentratorDomainService() {
return concentratorDomainService;
}
public void setConcentratorDomainService(ConcentratorDomainService concentratorDomainService) {
this.concentratorDomainService = concentratorDomainService;
}
@Pointcut("execution(* cn.iscas.ac.gz.sems.domain.internal.MonitorServerDomainServiceImpl.turnOnOffLight*(..))")
void turnOnOffLightCommandExecution() {
// ...............................................
}
@Pointcut("execution(* cn.iscas.ac.gz.sems.domain.internal.MonitorServerDomainServiceImpl.dimming*(..))")
void dimmingCommandExecution() {
//..............................................
}
@Pointcut("execution(* cn.iscas.ac.gz.sems.domain.internal.MonitorServerDomainServiceImpl.circuitPowerOnOff(..))")
void circuitPowerOnOffCommandExecution() {
//.........................................
}
@Around(" turnOnOffLightCommandExecution() || dimmingCommandExecution() || circuitPowerOnOffCommandExecution()")
public Object commandExecutionPointCut(ProceedingJoinPoint joinPoint) throws Exception {
................................
return null;
}
}
解释:
@Pointcut :里头写的就是要切入的类中方法位置,使用*表示正则表达式匹配。匹配里面的方法。
@Around: 里头是一些方法的组合,当这些方法发生时,会触发commandExecutionPointCut方法的执行。它只要是打印一下控制台日志。
concentratorDomainService对象使用手动注入的方式,在配置文件中申明注入的。
学习链接 :http://www.mkyong.com/spring3/spring-aop-aspectj-annotation-example/
(完,待续...........................................)
分享到:
相关推荐
spring aop jar 包
spring aop spring aop spring aop spring aop spring aop spring aop spring aop spring aop spring aop
描述一下Spring AOP? 在Spring AOP中关注点(concern)和横切关注点(cross-cutting concern)有什么不同? AOP有哪些可用的实现? Spring中有哪些不同的通知类型(advice types)? Spring AOP 代理是什么? 引介...
spring-aop-1.1.1.jar spring-aop-1.2.6.jar spring-aop-1.2.9.jar spring-aop-2.0.2.jar spring-aop-2.0.6.jar spring-aop-2.0.7.jar spring-aop-2.0.8.jar spring-aop-2.0.jar spring-aop-2.5.1.jar spring-aop-...
一、适合人群 1、具备一定Java编程基础,初级开发者 2、对springboot,mybatis,mysql有基本认识 3、对spring aop认识模糊的,不清楚如何实现Java 自定义注解的 ...4、spring boot,mybatis,druid,spring aop的使用
基于注解实现SpringAop基于注解实现SpringAop基于注解实现SpringAop
使用 Spring AOP 进行方法耗时监测的好处有以下几点: 1. 代码实现简单,易于维护:使用 Spring AOP 可以将耗时监测的逻辑与业务逻辑进行解耦,避免业务逻辑代码的冗余和代码维护难度的提高。 2. 安全性高:使用 ...
springaop依赖的jar包,spring版本2.5.6,如果需要,可以下载使用,欢迎各位评论指出不足
Spring AOP 几个不同使用方法的完整例子,使用Junit4c测试, 在我的博客上有不同配置组合的说明,可以参考
死磕Spring之AOP篇 - Spring AOP两种代理对象的拦截处理(csdn)————程序
Spring框架的关键组件之一是面向方面编程(AOP)框架。 面向方面的编程需要将程序逻辑分解成不同的部分。 此教程将通过简单实用的方法来学习Spring框架提供的AOP/面向方面编程。
spring aop的demo spring aop的demo
AOP流程源码分析-SpringAOP中定义的类图AOP流程源码分析-SpringAOP中定义的类图AOP流程源码分析-SpringAOP中定义的类图AOP流程源码分析-SpringAOP中定义的类图AOP流程源码分析-SpringAOP中定义的类图AOP流程源码分析...
spring aop切面拦截指定类和方法实现流程日志跟踪 一般情况下,在不侵入业务代码的情况下,需要做流程日志跟踪是比较合理的 采用springaop切面思想
初探spring aop内部实现 、从源代码解读spring之DataSource实现和FactoryBean模式
Spring aop Spring aop
AOP的意思就是面向切面编程。本文主要是通过梳理JDK中自带的反射机制,实现 AOP动态代理模式,这也是Spring AOP 的实现原理
NULL 博文链接:https://306963591.iteye.com/blog/1129837
springAOP所需jar包 springAOP所需jar包 springAOP所需jar包 springAOP所需jar包 springAOP所需jar包
开发工具 spring-aop-4.3.6.RELEASE开发工具 spring-aop-4.3.6.RELEASE开发工具 spring-aop-4.3.6.RELEASE开发工具 spring-aop-4.3.6.RELEASE开发工具 spring-aop-4.3.6.RELEASE开发工具 spring-aop-4.3.6.RELEASE...