我想在此类中使用该存储库,但是当我放置 @Component 之类的构造型时,我从 IDE 收到错误:
Could not autowire. No beans of 'Authentication' type found.
public class CustomMethodSecurityExpressionRoot extends SecurityExpressionRoot implements MethodSecurityExpressionOperations {
@Autowired
private FlatRepository flatRepository;
public CustomMethodSecurityExpressionRoot(Authentication authentication) {
super(authentication);
}
}
最佳答案
您不能在 SecurityExpressionRoot
内使用 @Autowire
。
不过,您可以手动提供 FlatRepository
依赖项。
当您在 @Configuration
类中配置 Security 对象时,您可以 @Autowire
任何您需要的实例。
只需在 CustomMethodSecurityExpressionRoot
构造函数中为新依赖项腾出空间
class CustomMethodSecurityExpressionRoot extends SecurityExpressionRoot
implements MethodSecurityExpressionOperations {
private final FlatRepository flatRepository;
CustomMethodSecurityExpressionRoot(
final Authentication authentication,
final FlatRepository flatRepository) {
super(authentication);
this.flatRepository = flatRepository;
}
...
}
并在实例化点手动注入(inject)
final SecurityExpressionRoot root = new CustomMethodSecurityExpressionRoot(authentication, flatRepository);
关于java - 如何在非Spring的构造型类中使用@Autowired,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55195769/