我在Spring应用程序中使用的许多控制器都扩展了一个公共抽象类。因此,这些方法在抽象类中声明。 我想申请一个' PreAuthorize'在抽象方法中的条件,但我需要获取被调用的实际控制器类的名称以传递给EL评估器。 有办法吗?
答案 0 :(得分:0)
在抽象类中实现BeanNameAware接口。
public abstract class MyController implements BeanNameAware{
String beanName;
@Override
public void setBeanName(final String beanName) {
this.beanName = beanName;
}
@Override
public String getBeanName() {
return beanName;
}
}
您将获得实际bean名称而不是常规代理。如果您需要进一步定制实现BeanFactoryAware。您可以在预授权的SpEl中使用该getBeanName方法