當嘗試注入一個 時Optional<T>,Spring 從不調(diào)用我的 bean,而是注入一個Optional.empty().這是一些示例代碼:@Configurationpublic class Initialize { @Value("optionalValue") private String testString; @Bean (name = "getOptionalString") public Optional<String> getOptionalString() { return Optional.of(this.testString); //breakpoint put here, is never called }}@Componentpublic class Test { public Test(@Qualifier("getOptionalString") Optional<String> optional) { // optional's value is Optional.empty() here }我注意到(通過設置斷點)@Bean永遠不會被調(diào)用。如果我刪除Optional<String>,并簡單地返回String,那么它就可以了!我知道Spring有它自己的可選依賴項,但我很困惑為什么這不起作用(無論我在網(wǎng)上讀到的內(nèi)容都說它應該),而且我也不明白它是如何將其初始化為Optional.empty()?
1 回答

白豬掌柜的
TA貢獻1893條經(jīng)驗 獲得超10個贊
文檔說:
您可以通過 Java 8 的 java.util.Optional 來表達特定依賴項的非必需性質(zhì),如以下示例所示:
public?class?SimpleMovieLister?{ ???@Autowired ????public?void?setMovieFinder(Optional<MovieFinder>?movieFinder)?{ ????????... ????} }
所以使用Optional作為bean的類型并不是一個好主意。
添加回答
舉報
0/150
提交
取消