在 Spring Boot 文档中,它指出命令行上提供的以 --
开头的值将转换为系统属性。
By default SpringApplication will convert any command line option arguments (starting with ‘--’, e.g. --server.port=9000) to a property and add it to the Spring Environment.
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);
null
null
null
如何获取数据源的值,特别是主机的值,无论数据源是在属性文件中、在命令行上还是通过环境变量提供?
最佳答案
有一个类org.springframework.core.env.Environment
这是 Spring 对从不同来源接收的所有属性的抽象,默认情况下包括 systemProperties
和 systemEnvironment
.
为了获取属性,请注入(inject)Enviroment
并调用Enviroment#getProperty
:
var property = environment.getProperty("spring.datasource.url");
关于java - 无论 Spring 数据源 URL 是在哪里指定的,如何读取它的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54524863/