Tib*_*riu 9 java spring option-type
当尝试注入一个 时Optional<T>,Spring 从不调用我的 bean,而是注入一个Optional.empty().
这是一些示例代码:
@Configuration
public 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
}
}
@Component
public class Test {
public Test(@Qualifier("getOptionalString") Optional<String> optional) {
// optional's value is Optional.empty() here
}
Run Code Online (Sandbox Code Playgroud)
我注意到(通过设置断点)@Bean永远不会被调用。如果我删除Optional<String>,并简单地返回String,那么它就可以了!
我知道Spring有它自己的可选依赖项,但我很困惑为什么这不起作用(无论我在网上读到的内容都说它应该),而且我也不明白它是如何将其初始化为Optional.empty()?
JB *_*zet 11
文档说:
\n\n\n\n\n您可以通过 Java 8\xe2\x80\x99s java.util.Optional 表达特定依赖项的非必需性质,如以下示例所示:
\n\nRun Code Online (Sandbox Code Playgroud)\npublic class SimpleMovieLister {\n\n @Autowired\n public void setMovieFinder(Optional<MovieFinder> movieFinder) {\n ...\n }\n}\n
所以使用Optional作为bean的类型并不是一个好主意。
\n| 归档时间: |
|
| 查看次数: |
5430 次 |
| 最近记录: |