Чтение свойства перед инициализацией Spring Boot Application - PullRequest
0 голосов
/ 02 мая 2018

У меня есть ситуация, когда было бы полезно прочитать свойство из classpath:app.properties или classpath:presentation-api.properties для использования до запуска весеннего приложения, чтобы установить пару устаревших профилей.

Так было бы что-то вроде этого:

@SpringBootApplication
@PropertySource({"classpath:app.properties", "classpath:various_other.properties"})
public class MainApp extends SpringBootServletInitializer {

   @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {

        boolean legacyPropertyA = // might be set in classpath:app.properties or classpath:various_other.properties or not at all       
        boolean legacyPropertyB = // might be set in classpath:app.properties or classpath:various_other.properties or not at all

        if (legacyPropertyA) {
            builder.profiles("legacyProfileA");
        }
        if (legacyPropertyB) {
            builder.profiles("legacyProfileB");
        }

        return super.configure(builder);
    }
}

Какой самый чистый способ получения legacyPropertyA и legacyPropertyB?

1 Ответ

0 голосов
/ 03 мая 2018

Я думаю, вы можете объединить аннотации @ Value и @ PostConstruct , чтобы получить более чистое решение. Пожалуйста, посмотрите на пример ниже:

@SpringBootApplication
@PropertySource({"classpath:application-one.properties", "classpath:application-two.properties"})
public class MyApplication extends SpringBootServletInitializer {

    @Value("${property.one}")
    private String propertyOne;

    @Value("${property.two}")
    private String propertyTwo;

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(MyApplication.class);
    }

    @PostConstruct
    public void initProperties() {
        System.out.println(propertyOne);
        System.out.println(propertyTwo);
    }
}

Надеюсь, это поможет вам. Пожалуйста, дайте мне знать, что у вас есть какие-либо вопросы.

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