大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
spring aop参数传递
使用示例
HelloService
public interface HelloService {
String hello();
String hello(String name);
String hello(String name, Integer age);
}
HelloServiceImpl
@Service
public class HelloServiceImpl implements HelloService {
@Override
public String hello() {
return "hello";
}
@Override
public String hello(String name) {
return "hello " + name;
}
@Override
public String hello(String name, Integer age) {
return "hello " + name + " " + age;
}
}
CustomAspect
@Aspect
@Component
public class CustomAspect {
@Pointcut("execution(* *.hello(..))")
public void fun(){
}
@Pointcut("execution(* *.hello(String)) && args(name))")
public void fun2(String name){
}
@Pointcut("execution(* *.hello(String,..)) && args(name))")
public void fun3(String name){
}
@Pointcut("execution(* *.hello(String,Integer)) && args(name,age)")
public void fun4(String name, Integer age){
}
@Before("fun()")
public void before(JoinPoint joinPoint){
System.out.print("before ==> ");
process(joinPoint);
}
@Before("fun2(name)")
public void before2(JoinPoint joinPoint,String name){
System.out.print("before2 ==> " + name + " ==> ");
process(joinPoint);
}
@Before("fun3(name)")
public void after3(JoinPoint joinPoint,String name){
System.out.print("after3 ==> "+ name + " ==> ");
process(joinPoint);
}
@After("fun4(name,age)")
public void after4(JoinPoint joinPoint, String name, Integer age){
System.out.print("after4 ==> "+ name + " " +age + " ==> ");
process(joinPoint);
}
public void process(JoinPoint joinPoint){
MethodSignature signature =(MethodSignature) joinPoint.getSignature();
Method method = signature.getMethod();
System.out.println(method.getDeclaringClass().getName()+"."+method.getName()+":被调用");
}
}
HelloController
@RestController
public class HelloController {
@Resource
private HelloService helloService;
@RequestMapping("/hello")
public String hello(){
return helloService.hello();
}
@RequestMapping("/hello2")
public String hello2(){
return helloService.hello("瓜田李下");
}
@RequestMapping("/hello3")
public String hello3(){
return helloService.hello("瓜田李下",20);
}
}
使用示例
localhost:8080/hello,控制台输出:
before ==> com.example.demo.controller.HelloController.hello:被调用
before ==> com.example.demo.service.impl.HelloServiceImpl.hello:被调用
localhost:8080/hello2,控制台输出:
after3 ==> 瓜田李下 ==> com.example.demo.service.impl.HelloServiceImpl.hello:被调用
before ==> com.example.demo.service.impl.HelloServiceImpl.hello:被调用
before2 ==> 瓜田李下 ==> com.example.demo.service.impl.HelloServiceImpl.hello:被调用
localhost:8080/hello3,控制台输出:
before ==> com.example.demo.service.impl.HelloServiceImpl.hello:被调用
after4 ==> 瓜田李下 20 ==> com.example.demo.service.impl.HelloServiceImpl.hello:被调用
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/169626.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...