【发布时间】:2011-11-20 21:53:24
【问题描述】:
是否可以在 Spring 中获取给定对象的代理?我需要调用一个子类的函数。但是,很明显,当我直接调用时,这些方面没有应用。这是一个例子:
public class Parent {
public doSomething() {
Parent proxyOfMe = Spring.getProxyOfMe(this); // (please)
Method method = this.class.getMethod("sayHello");
method.invoke(proxyOfMe);
}
}
public class Child extends Parent {
@Secured("president")
public void sayHello() {
System.out.println("Hello Mr. President");
}
}
我找到了实现这一目标的方法。它有效,但我认为不是很优雅:
public class Parent implements BeanNameAware {
@Autowired private ApplicationContext applicationContext;
private String beanName; // Getter
public doSomething() {
Parent proxyOfMe = applicationContext.getBean(beanName, Parent.class);
Method method = this.class.getMethod("sayHello");
method.invoke(proxyOfMe);
}
}
【问题讨论】:
标签: spring aop spring-aop