![](/img/trans.png)
[英]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.