Я знаю, что подобные вопросы задавались много раз с разными вариациями. Я пытался учиться у них и из доступных руководств и пытаться заставить его работать, но я думаю, что упускаю что-то, что я не могу понять.
Я хочу загрузить конфигурацию из внешнего файла yaml admin-config.yml
, а не стандартного application.yml
в моем случае.
Это то, что я сделал до сих пор.
- Аннотировал файл приложения с помощью
@EnableConfigurationProperties
@SpringBootApplication
@EnableConfigurationProperties
public class MyServer {
public static void main(String[] args) {
SpringApplication.run(MyServer.class, args);
}
}
- Класс компонента
AdminConfig
:
@Component
@PropertySource("classpath:admin-config.yml")
@ConfigurationProperties(prefix = "admin-config")
public class AdminConfig {
private List<PrimeModerator> primeModerators;
@PostConstruct
public void init() {
System.out.println(primeModerators); // this is null
}
public void setPrimeModerators(List<PrimeModerator> primeModerators) {
this.primeModerators = primeModerators;
}
public List<PrimeModerator> getPrimeModerators() {
return primeModerators;
}
}
PrimeModerator
класс
@Data
public class PrimeModerator implements Serializable {
private long id;
private String name;
private List<String> roles;
private String details;
private Date created;
}
admin-config.yml
.
admin-config:
primeModerators:
- !!com.mydomain.model.PrimeModerator
id: 1
name: Pawan
roles: [super-admin]
- !!com.mydomain.model.PrimeModerator
id: 2
name: Prashant
roles: [admin, moderator]
Я создал модульный тестовый пример, который всегда терпит неудачу (чего не должно быть).
@SpringBootTest
@RunWith(SpringRunner.class)
public class AdminConfigTest {
@Autowired
private AdminConfig adminConfig;
@Test
public void testAdminConfig() {
assertNotNull(adminConfig.getPrimeModerators()); // this fails
}
}
Я не уверен, что мне здесь не хватает. Использование версии Springboot 2.2.1.RELEASE
с jdk8.
Спасибо за ваши ответы заранее!