Установить класс в списке интерфейсов в YML - PullRequest
0 голосов
/ 02 октября 2019

У меня есть интерфейс с 2 реализациями. Мне нужно явно указать в файле конфигурации реализацию, которую я буду использовать. В настоящий момент я получаю сообщение об ошибке "Причина: элементы [api.services [0] .esrigeolocationfinderserviceimpl, api.services [1] .peliasgeolocationfinderserviceimpl] остались несвязанными" при запуске моего приложения для весенней загрузки. Вот классы:

public interface MyService {
   // Some methods here
}

 @Data
 @Component
 @NoArgsConstructor
 public class MyFirstServiceImpl implements MyService {

     private String first;
 }

 @Data
 @Component
 @NoArgsConstructor
 public class MySecondServiceImpl implements MyService {
   private String second;
 }

 @Data
 @Configuration
 @EnableConfigurationProperties
 @ConfigurationProperties(prefix="api")
 public class MyConfig {
     @Autowired
     private List<MyService> services;
 }

application.yml:

 api:
  services[0]: { first: aValue }
  services[1]: { second: anotherValue }

Знаете ли вы, как мы можем установить значения в списке интерфейсов?

Спасибо

1 Ответ

0 голосов
/ 02 октября 2019

Этого можно добиться, используя аннотацию в @Component классах @PropertySource("classpath:api.services[0]")

. Здесь вы можете посмотреть: Свойства конфигурации при весенней загрузке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...