基于SpringBoot
场景:A方法调用内部B方法,需要切B方法
1,新建工具类SpringContextUtil实现ApplicationContextAware接口,@Component交给容器管理
@Component
public class SpringContextUtil implements ApplicationContextAware {
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
SpringContextUtil .applicationContext = applicationContext;
}
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
public static Object getBean(String name) throws BeansException {
return applicationContext.getBean(name);
}
public static <T> T getBeanByClass(Class<T> cls) throws BeansException {
return applicationContext.getBean(cls);
}
}
2,调用内部方法时写法
// 注入当前Bean使得调用内部方法也被SpringAOP拦截
UserService service = SpringContextUtil.getBean(this.getClass());
User user = service .selectById(id);