无法从命令行配置数据源

时间:2019-06-11 07:27:01

标签: spring-boot spring-data-jpa

我正在尝试从命令行更改数据源设置。我有一个具有默认设置的application.properties。我想从命令行修改文件中的参数,但是当我传递数据源参数时,出现错误。我阅读了《外部化配置》文档:“访问命令行属性 默认情况下,SpringApplication将所有命令行选项参数(即以-开头的参数,例如--server.port = 9000)转换为属性,并将其添加到Spring Environment中。如前所述,命令行属性始终优先于其他属性源”。 我以为参数会将默认设置覆盖到application.properties中,但是我错过了一些有关此的步骤。

我尝试过在属性中没有spring.datasource.url或Placeholders。在application.properties下面。

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 :(得分:0)

将顶部注释从@SpringBootConfiguration更改为@SpringBootApplication

@SpringBootApplication实际上是@configuration@EnableAutoConfiguration@ComponentScan的快捷方式。

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

@EnableAutoConfiguration根据所包含的依赖项以及在环境中找到的信息,在配置应用程序的幕后发挥了很多魔力。