代码之家  ›  专栏  ›  技术社区  ›  Chloe

无论在何处指定了Spring数据源URL,我如何读取它的值?

  •  1
  • Chloe  · 技术社区  · 5 年前

    在Spring引导文档中,它声明在命令行上提供的值以 -- 转换为系统属性。

    https://docs.spring.io/spring-boot/docs/1.5.19.RELEASE/reference/htmlsingle/#boot-features-external-config-command-line-args

    默认情况下,SpringApplication会将任何命令行选项参数(从__--_开始,例如--server.port=9000)转换为属性并将其添加到Spring环境中。

    mvn spring-boot:run -Drun.arguments="-task report:weekly,--spring.datasource.url=jdbc:mysql://xx.xx.us-east-1.rds.amazonaws.com:3306/xx"
    

    我发现这不是真的。我试图打印数据源值和所有三个返回值 null .

        System.out.println(System.getenv("SPRING_DATASOURCE_URL"));
        System.out.println(System.getProperty("SPRING_DATASOURCE_URL"));
        System.out.println(System.getProperty("spring.datasource.url"));
        System.exit(1);
    

    无效的
    无效的
    无效的

    无论数据源是在属性文件、命令行还是通过环境变量提供的,我如何获取数据源的值,特别是主机的值?

    1 回复  |  直到 5 年前
        1
  •  1
  •   Andrew Tobilko thotheolh    5 年前

    有一个班 org.springframework.core.env.Environment 这是Spring对从不同来源接收到的所有属性的抽象,默认情况下包括 systemProperties systemEnvironment .

    为了获取属性,请插入 Enviroment 并打电话 Enviroment#getProperty :

    var property = environment.getProperty("spring.datasource.url");