1.切所有controller下的请求
项目结构
任意公共方法的执行:
execution(public *(…))
##public可以省略, 第一个 代表方法的任意返回值 第二个参数代表任意包+类+方法 (…)任意参数
配置切入点:
@Pointcut("execution(* com.gcol.qy.web.system.controller..*.*(..))")
public void conPoint(){}
表达式结构解释如下:
标识符 | 含义 |
---|---|
execution() | 表达式的主体 |
第一个“ * ”符号 | 表示返回值的类型任意 |
com.gcol.qy.web.system.controller | AOP所切的服务的包名,即,需要进行横切的业务类 |
包名后面的“..” | 表示当前包及子包 |
第二个“*” | 表示类名,*即所有类 |
.*(..) | 表示任何方法名,括号表示参数,两个点表示任何参数类型 |
如果需要多个切入点可以用 || 符号 如下:
@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” 执行的方法类