Не удалось настроить источник данных из командной строки - PullRequest
0 голосов
/ 11 июня 2019

Я пытаюсь изменить настройку источника данных из командной строки. У меня есть application.properties с настройками по умолчанию. Я хотел бы изменить параметры в файле из командной строки, но когда я передаю аргументы источника данных, я получаю сообщение об ошибке. Я прочитал в документе Externalized Configuration: «Доступ к свойствам командной строки По умолчанию SpringApplication преобразует любые аргументы параметра командной строки (то есть аргументы, начинающиеся с -, например, --server.port = 9000) в свойство и добавляет их в среду Spring. Как упоминалось ранее, свойства командной строки всегда имеют приоритет над другими источниками свойств ". Я предполагал, что аргументы перезаписывают настройки по умолчанию в application.properties, но я пропускаю некоторые шаги по этому поводу.

Я пробовал без spring.datasource.url или Заполнителей в Свойствах. Ниже приложение. Свойства.

spring.datasource.url =  jdbc:oracle:thin:@servername:port:DB11G
#spring.datasource.url = ${spring.datasource.url}
spring.datasource.driver.class=oracle.jdbc.driver.OracleDriver
spring.datasource.username = dbUser
spring.datasource.password = password

Мое приложение с настройками источника данных по умолчанию работает хорошо.

это мой код:

spring.datasource.url = ${db.url}
spring.datasource.driver.class=oracle.jdbc.driver.OracleDriver
spring.datasource.username = dbUser
spring.datasource.password = dbPassword

Основной класс

@SpringBootConfiguration
public class IdsFeApplication implements ApplicationRunner{



    private static final String FEC_CODEX = "A";

    @Autowired
    private static ConfigInfoDB infoDb;

    @Autowired
    private Login fec;






      public static void main(String[] args) throws InterruptedException {
            SpringApplication bootApp = new SpringApplication(IdsFeApplication.class);
            bootApp.setBannerMode(Banner.Mode.OFF);
            bootApp.setLogStartupInfo(false);
            ConfigurableApplicationContext context = bootApp.run(args);
            ConfigInfoDB db=context.getBean(ConfigInfoDB.class);
            db.dbInfo();


    }

    @Override
    public void run(ApplicationArguments args) throws Exception {
        // TODO Auto-generated method stub

        fec.token(FEC_CODEX);


    }

}

1 Ответ

0 голосов
/ 13 июня 2019

Измените верхнюю аннотацию с @SpringBootConfiguration на @SpringBootApplication.

@SpringBootApplication в действительности является сокращением для @configuration, @EnableAutoConfiguration и @ComponentScan.

https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-using-springbootapplication-annotation.html

@EnableAutoConfiguration делает много магии за кулисами настройки вашего приложения на основе того, какие зависимости включены и какую информацию он находит в среде.

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