gpt4 book ai didi

java - 使用 Java 的 Optional 进行 Spring 注入(inject)

转载 作者:行者123 更新时间:2023-12-03 23:50:39 25 4
gpt4 key购买 nike

尝试注入(inject) Optional<T> 时, Spring 从不调用我的 bean,而是注入(inject)一个 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
}

我注意到(通过设置断点) @Bean永远不会被调用。如果我要删除 Optional<String> , 并简单地返回 String ,然后就可以了!

我知道 Spring有它自己的 optional 依赖项,但我很困惑为什么这不起作用(无论我在网上读到什么都说它应该),而且我也不明白它是如何将它初始化为 Optional.empty() ?

最佳答案

The documentation说:

you can express the non-required nature of a particular dependency through Java 8’s java.util.Optional, as the following example shows:

public class SimpleMovieLister {

@Autowired
public void setMovieFinder(Optional<MovieFinder> movieFinder) {
...
}
}


所以使用 Optional 作为 bean 的类型并不是一个好主意。

关于java - 使用 Java 的 Optional 进行 Spring 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58528943/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com