[英]How to use @Autowired MongoTemplate in multiple classes in spring boot
[英]How to use @Autowired in not Spring's stereotype classes
我想在此类中使用该存储库,但是当我放置类似@Component的构造型时,会从IDE中收到错误消息:
无法自动接线。 找不到“身份验证”类型的bean。
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;
}
...
}
并在实例化点手动注入
final SecurityExpressionRoot root = new CustomMethodSecurityExpressionRoot(authentication, flatRepository);
要使用Bean的自动装配实例,您需要使用该实例的组件/服务也要由Spring进行管理。 因此,为了使用存储库,您需要对CustomMethodSecurityExpressionRoot类进行扩展。 您可以使用@Component / @Service注释对类进行注释,并通过组件扫描对其进行选择,或者使用Java或XML配置来配置bean。
如果“ Springify” CustomMethodSecurityExpressionRoot,则需要确保Spring对象上下文可以访问Authentication对象。 这就是为什么您收到无法找到身份验证的错误的原因。 您还需要使用Java或XML创建Authentication类型的Bean。
请检查官方文档以了解如何定义spring bean:
https://docs.spring.io/spring-javaconfig/docs/1.0.0.M4/reference/html/ch02s02.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.