为什么内部调用不会触发AOP?

原因:因为AOP是由代理实现的,而如果是方法内部调用方法,是不会走代理的,也就不会被AOP所增强

解决方式:通过代理进行调用方法

1. 在本类自动注入当前Bean

@Service
public class UserService {
	@Autowired
	private IUserService userService;

	public String getName() {
		userService.getAge();
		return "Kkuil";
	}

	public String getAge() {
		return 18;
	}
}

2. 设置暴露当前代理对象到本地线程,然后通过AopContextPoxy()拿到当前正在使用的动态代理对象,然后调用相关方法

@EnableAspectJAutoProxy(exposeProxy = true)

你可能感兴趣的:(java,开发语言)