SpEL类的引用实例变量

时间:2017-04-24 16:26:20

标签: java spring spring-boot spring-security spring-el

我正在使用自定义方法为我的Spring安全预授权注释,我需要传递一长串的perms。我想在外部存储该列表,因为它在一些地方使用但我似乎无法弄清楚如何参考上述清单。似乎永远都是空的。

@RestController
@RequestMapping("/example")
public class MyController  {

...constructor/other stuff
public List<String> perms_I_want_to_reference = Arrays.asList("super","long","list")

@PreAuthorizze("@securityService.MyCustomMethod(principal, *this where I want to reference perms*)
@RequestMapping(method = RequestMethod.GET)
public ResponseEntity<?>doSomethingTopSecret(){
}

}

我尝试了#并使列表静态并使用T但到目前为止没有任何工作。

1 个答案:

答案 0 :(得分:1)

从注释访问字段的唯一方法是通过反射。为了做到这一点,Spring需要访问该类的字段。我没有听说过在计算表达式时获取对当前类的引用的方法,但是实现所需的一种方法是引用bean本身并访问该字段:

public List<String> perms_I_want_to_reference = Arrays.asList("super","long","list");

@PreAuthorizze("@securityService.MyCustomMethod(principal, @myController.perms_I_want_to_reference)")
@RequestMapping(method = RequestMethod.GET)
public ResponseEntity<?>doSomethingTopSecret(){ }