Kotlin:使用Spring的可选依赖注入

时间:2019-05-28 08:59:51

标签: spring kotlin dependency-injection

kotlin替代品

@Autowired(required=false)
private DependencyC dependencyC;

private Optional<HelloService> optionalHelloService;
public HelloController(Optional<HelloService> helloService) {
    this.optionalHelloService = helloService;
}

2 个答案:

答案 0 :(得分:2)

然后应将该属性设置为可空的

class HelloController(
    @Autowired(required = false) val helloService: HelloService?
)

答案 1 :(得分:0)

接受的答案已过时。 Spring使用类型信息来推断bean是否是可选的。看到 https://docs.spring.io/spring/docs/current/spring-framework-reference/languages.html#kotlin-annotations,特别是

以类似的方式,带有@ Autowired,@ Bean或@Inject的Spring bean注入使用此信息来确定是否需要bean。

由于@Autowired对于构造函数参数是可选的,因此最短的Kotlin替代方案是

class HelloController(private val optionalHelloService: HelloService?)