自动传参

Exisi 2022-11-28 08:51:01
Categories: Tags:


语法

args(param)

示例

@Before(value="execution(* test(*)) && args(param)", argNames="param")  

public void before1(String param) {  

    System.out.println("===param:" + param);  

}

 

 

 

切入点表达式自动传参


其他指示符(除了executionbean指示符)都可以使用这种方式进行参数绑定


示例

@Before(value = " args(param)", argNames = "param") //明确指定了

public void before1(String param){

    System.out.println("===param:" + param);

}

 

示例

@Before(value=" args(param)", argNames="param") //明确指定了  

public void before1(JoinPoint jp, String param) {  

    System.out.println("===param:" + param);  

} 

 

示例

@Before(value=" args(param)") //不需要argNames了  

public void before1(JoinPoint jp, String param) {  

    System.out.println("===param:" + param);  

}

 

示例

@Before(value = " args(param)")

public void before1(JoinPoint jp, String param){

    System.out.println("===param:" + param);

}

 

以上策略失败将抛出IllegalArgumentException

 

示例

@Before(args(param) && target(bean) && @annotation(secure)", argNames = "jp,param,bean,secure")

public void before5(JoinPoint jp, String param, IPointcutService pointcutService, Secure secure){

    ……

}

 

 

切入点自动传参

示例

@Pointcut(value="args(param)", argNames="param")  

private void pointcut1(String param){}  

@Pointcut(value="@annotation(secure)", argNames="secure")  

private void pointcut2(Secure secure){}  

     

@Before(value = "pointcut1(param) && pointcut2(secure)", argNames="param, secure")  

public void before6(JoinPoint jp, String param, Secure secure) {  

……  

}

 

来自< https://blog.csdn.net/u011479200/article/details/94157295>