Я перемещаю свое приложение в kotlin, и в одном из моих файлов есть карта автопровода для реализации шаблона стратегии. Когда я меняю этот файл на kotlin
, приходит весна, чтобы ввести бобы
Я уже пробовал lateinit, @jvmfield и другие. Я вносил изменения и смотрел на получившуюся декомпилированную Java, чтобы понять, понятно ли, почему произошла ошибка. Похоже, потому что хэш-карта в версии Java не имеет типа показа.
Hashmap vs HashMap<String,Object>
Версия Java до изменения. Это собрало все компоненты типа AudienceService и вставило их в эту карту
@Autowired
private Map<String, AudienceService> audienceServiceMap = new HashMap<>();
Kotlin версия:
@Autowired
private lateinit var audienceServiceMap : HashMap<String, AudienceService>
Java-декомпилированная версия приведенного выше кода котлина
@Autowired
private HashMap audienceServiceMap;
Ошибка к весне
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'audienceContext': Unsatisfied dependency expressed through field 'audienceServiceMap'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'java.util.HashMap<java.lang.String,