用的不深,简单的说一下我的理解。
我认为这个切面框架就是将逻辑代码与非逻辑代码分开的一个盒子。盒子中有几个部分,前边一个格子写log,最后后边一个格子写log,中间的格子写逻辑代码。
这样区分开的作用简化了代码量,就相当于我们所写的工具类一样,将log这种非逻辑的东西封装。与逻辑代码分别放在两个不同的文件中。然后利用spring的注册,在配置文件中,自动调用其中的某个方法,从而实现切面的概念。
所谓切面,就是相当于是一把 刀。而切面里边用到的expression 即为切点,切点可以想象成为萝卜与刀 接触的那个点。
大体的配置如下:
<bean id="dubboPropUtil" class="com.caissa.erp.workflow.aop.DubboTransIDPropUtil" />
<aop:config>
<aop:aspect ref="dubboPropUtil">
<!-- 定义切面 -->
<aop:pointcut id="dubboApiPointcut" expression="execution(* com.caissa.erp.workflow.export..*.*(..))"/>
<!-- 建立切面与通知间的调用方法关系 -->
<aop:around method="logRoundMethod" pointcut-ref="dubboApiPointcut"/>
</aop:aspect>
</aop:config>
首先注册一下这把 刀,然后再定义一下这个切 入点是哪儿~然后再配置一下以什么样的方式或者说是以什么样的方法切 下去。
public Object logRoundMethod(ProceedingJoinPoint pjp) throws Throwable{
log.info("所描述的日志说明(exss接口:)",“展示的日志文字(XXX方法被调用)”);
return pjp.proceed();
}
至此切面完成。