Какова альтернатива kotlin для
@Autowired(required=false)
private DependencyC dependencyC;
а также
private Optional<HelloService> optionalHelloService;
public HelloController(Optional<HelloService> helloService) {
this.optionalHelloService = helloService;
}
Затем вы должны сделать это свойство обнуляемым:
class HelloController(
@Autowired(required = false) val helloService: HelloService?
)
Я пытаюсь сделать это со списком бобов, но это не работает. Есть идеи? @Autowired(required = false) val requestHandlingServices: List<RequestHandlingService>?
Принятый ответ устарел. Spring использует информацию о типе, чтобы определить, является ли компонент необязательным. Видеть https://docs.spring.io/spring/docs/current/spring-framework-reference/languages.html#kotlin-annotations, в частности
In a similar fashion, Spring bean injection with @Autowired, @Bean, or @Inject uses this information to determine if a bean is required or not.
Поскольку @Autowired
является необязательным для параметров конструктора, самая короткая альтернатива Kotlin —
class HelloController(private val optionalHelloService: HelloService?)
Это стало возможным с момента первого выпуска поддержки Kotlin в Spring Framework 5.0.0.
Что вы пробовали? Что в нем не сработало? Как вы думаете, почему существует принципиальная разница между java и kotkin для внедрения зависимостей?