我可以在注释中使用@PreAuthorize
吗?
在Spring中,我可以在注释中使用Component
和DependsOn
等注释,如下所示:
@Target(ElementType.TYPE)
@Component
@DependsOn(CoreInitializerConfig.ROLE_INITIALIZER_ID)
public @interface WebComponent
{
}
它运作良好。但是当我尝试以同样的方式使用PreAuthorize
时:
@Target(
{
ElementType.TYPE, ElementType.METHOD
})
@Component
@PreAuthorize("hasAuthority('PERM_READ_SETTINGS')")
public @interface SettingsAuthorized
{
}
不工作,我在MVC控制器pojo和Bean的方法中尝试了它并且没有工作,我必须明确地说明:
@Controller
@PreAuthorize("hasAuthority('PERM_READ_SETTINGS')")
public class SettingsController
{
...
}
答案 0 :(得分:3)
我通过添加@Retention(RetentionPolicy.RUNTIME)
解决了问题
它还建议将@Documented
和@Inherited
添加到最终注释中,结果是:
@Target(
{
ElementType.TYPE, ElementType.METHOD
})
@Component
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
@PreAuthorize("hasAuthority('PERM_READ_SETTINGS')")
public @interface SettingsAuthorized
{
}