如何在@PreAuthorize注解中引用Spring属性?
你之前的写法问题在于给${required-authority}加了单引号,导致Spring EL把整个${required-authority}当成了字符串字面量,没有解析配置属性。以下是两种可行的正确写法:
方法一:直接在SpEL中引用配置属性
不需要给${}表达式加单引号,Spring会自动解析配置值并传入hasAuthority()方法:
- 保持application.yml配置不变:
required-authority: The_Group
- 修改控制器注解:
@PreAuthorize("hasAuthority(${required-authority})") // 你的控制器方法 public ResponseEntity<?> yourControllerMethod() { // ... 方法逻辑 }
如果配置的权限名称包含空格或特殊字符,可以在配置文件中给属性值加单引号,注解写法不变:
required-authority: 'The Group With Spaces'
方法二:通过@Value注入字段后引用
如果需要更灵活的处理(比如后续要对权限值做逻辑处理),可以先把配置属性注入到控制器字段,再在SpEL中引用该字段:
@RestController public class YourController { @Value("${required-authority}") private String requiredAuthority; @PreAuthorize("hasAuthority(#requiredAuthority)") public ResponseEntity<?> yourControllerMethod() { // ... 方法逻辑 } }
内容的提问来源于stack exchange,提问作者fml2
相关产品推荐
相关产品推荐

