spring aop execution表达式

2022-07-02 11:06:17

1.切所有controller下的请求
项目结构
**这里写图片描述**
任意公共方法的执行:
execution(public *(…))
##public可以省略, 第一个
代表方法的任意返回值 第二个参数代表任意包+类+方法 (…)任意参数
配置切入点:

@Pointcut("execution(* com.gcol.qy.web.system.controller..*.*(..))")
public void conPoint(){}

表达式结构解释如下:

标识符含义
execution()表达式的主体
第一个“ * ”符号表示返回值的类型任意
com.gcol.qy.web.system.controllerAOP所切的服务的包名,即,需要进行横切的业务类
包名后面的“..”表示当前包及子包
第二个“*”表示类名,*即所有类
.*(..)表示任何方法名,括号表示参数,两个点表示任何参数类型

如果需要多个切入点可以用 || 符号 如下:

@Pointcut("execution(* com.gcol.qy.web.system.controller..*.*(..)) || execution(* com.gcol.qy.web.system.api..*.*(..))")
public void conPoint(){}

xml 配置

	<!-- 切换到获取kpi信息的oracle数据库 -->
	<aop:config>
		<aop:aspect id="dataSourceAspect2" ref="dataSourceInterceptor">
			<aop:pointcut id="daoThree" expression="execution(* com.gcol.qy.web.system.service.kpi.KpiServiceImpl.*(..))
			|| execution(*  com.gcol.qy.web.system.service.team.TeamServiceImpl.getFamilyPremiun(..))
			|| execution(*  com.gcol.qy.web.system.service.team.TeamServiceImpl.getSalesmanPremium(..))"/>
			<aop:before pointcut-ref="daoThree" method="setDataSourceKpi"/>
		</aop:aspect>
	</aop:config>

ref=“dataSourceInterceptor” 执行的方法类

  • 作者:小贼驴
  • 原文链接:https://blog.csdn.net/weixin_38362455/article/details/81837174
    更新时间:2022-07-02 11:06:17