当尝试注入一个 时Optional<T>,Spring 从不调用我的 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永远不会被调用。如果我删除Optional<String>,并简单地返回String,那么它就可以了!我知道Spring有它自己的可选依赖项,但我很困惑为什么这不起作用(无论我在网上读到的内容都说它应该),而且我也不明白它是如何将其初始化为Optional.empty()?
1 回答
白猪掌柜的
TA贡献1893条经验 获得超10个赞
文档说:
您可以通过 Java 8 的 java.util.Optional 来表达特定依赖项的非必需性质,如以下示例所示:
public class SimpleMovieLister { @Autowired public void setMovieFinder(Optional<MovieFinder> movieFinder) { ... } }
所以使用Optional作为bean的类型并不是一个好主意。
添加回答
举报
0/150
提交
取消