更新时间:2023-10-06 13:24:58
你不能在 SecurityExpressionRoot
中@Autowire
.
但是,您可以手动提供 FlatRepository
依赖项.
You cannot @Autowire
inside a SecurityExpressionRoot
.
You can however manually provide that FlatRepository
dependency.
当您在 @Configuration
类中配置您的安全对象时,您可以@Autowire
任何您需要的实例.
As you're configuring your Security objects inside a @Configuration
class, there you're able to @Autowire
any instance you need.
只需为 CustomMethodSecurityExpressionRoot
构造函数中的新依赖项腾出空间
Simply make space for that new dependency in CustomMethodSecurityExpressionRoot
constructor
class CustomMethodSecurityExpressionRoot extends SecurityExpressionRoot
implements MethodSecurityExpressionOperations {
private final FlatRepository flatRepository;
CustomMethodSecurityExpressionRoot(
final Authentication authentication,
final FlatRepository flatRepository) {
super(authentication);
this.flatRepository = flatRepository;
}
...
}
并在实例化点手动注入
final SecurityExpressionRoot root = new CustomMethodSecurityExpressionRoot(authentication, flatRepository);