У меня была такая же проблема, и я преодолел реализацию Spring ApplicationContextAware
, BeanNameAware
и выполнил соответствующие методы, как показано ниже.
class ABC implements ApplicationContextAware,BeanNameAware{
@Override
public void setApplicationContext(ApplicationContext ac) throws BeansException {
applicationContext=ac;
}
@Override
public void setBeanName(String beanName) {
this.beanName=beanName;
}
private ApplicationContext applicationContext;
private String beanName;
}
, после чего я заменил this.
на ((ABC) applicationContext.getBean(beanName)).
вызывая методы одного и того же класса. Это гарантирует, что вызовы методов одного и того же класса происходят только через прокси.
Таким образом, method1()
изменяется на
public void method1(){
.........
((ABC) applicationContext.getBean(beanName)).method2();
...........
}
Надеюсь, что это поможет.