Java Spring引导:从另一个属性文件读取数据源属性
我想在SpringBoot中配置tomcat数据源,数据库的属性存储在另一个属性文件(比如dbConnection.properties)中,并使用不同的键 比如说 dbConnection.properties:Java Spring引导:从另一个属性文件读取数据源属性,java,spring-boot,Java,Spring Boot,我想在SpringBoot中配置tomcat数据源,数据库的属性存储在另一个属性文件(比如dbConnection.properties)中,并使用不同的键 比如说 dbConnection.properties: DATABASE_URL=SomeURL DATABASE_USER=SomeUser DATABASE_PASSWORD=SomePassword 据我所知,与数据源相关的属性必须在应用程序中指定。属性为: spring.datasource.url=jdbc:mysql://l
DATABASE_URL=SomeURL
DATABASE_USER=SomeUser
DATABASE_PASSWORD=SomePassword
据我所知,与数据源相关的属性必须在应用程序中指定。属性为:
spring.datasource.url=jdbc:mysql://localhost/test
spring.datasource.username=dbuser
spring.datasource.password=dbpass
如何将值从dbConnection.properties传递到application.properties?从
属性贡献可以来自类路径上的附加JAR文件,因此不应认为这是一个详尽的列表。定义自己的属性也是完全合法的。
所以你可以有自己的属性文件,它应该在你的类路径中
使用Value
注释注入属性
@Value(“#{propFileName.propKeyName}”)
来自
属性贡献可以来自类路径上的附加JAR文件,因此不应认为这是一个详尽的列表。定义自己的属性也是完全合法的。
所以你可以有自己的属性文件,它应该在你的类路径中
使用Value
注释注入属性
@Value(“#{propFileName.propKeyName}”)
您所需要的只是覆盖Spring引导的数据源默认配置。请参见上面的示例:
@Bean
@Primary
public DataSource dataSource() {
return DataSourceBuilder
.create()
.username("") // TODO: Get from properties
.password("") // TODO: Get from properties
.url("") // TODO: Get from properties
.driverClassName("") // TODO: Get from properties
.build();
}
为了从属性中获取,您可以使用@Saravana告诉您的
@Value
注释。您所需要的只是覆盖Spring Boot的数据源默认配置。请参见上面的示例:
@Bean
@Primary
public DataSource dataSource() {
return DataSourceBuilder
.create()
.username("") // TODO: Get from properties
.password("") // TODO: Get from properties
.url("") // TODO: Get from properties
.driverClassName("") // TODO: Get from properties
.build();
}
为了从属性中获取信息,您可以使用@Saravana告诉您的
@Value
注释。@Manish Kothari。。。试试这个,创建一个带有注释的配置类,如
@配置属性
@Component
@PropertySource("classpath:dbConnection.properties")
@ConfigurationProperties
public class ConfigurationClass{
//some code
}
现在它将调用您的数据库属性。。。我希望这能奏效@Manish Kothari。。。试试这个,创建一个带有注释的配置类,如 @配置属性
@Component
@PropertySource("classpath:dbConnection.properties")
@ConfigurationProperties
public class ConfigurationClass{
//some code
}
现在它将调用您的数据库属性。。。我希望这能奏效有多种方法可以做到这一点 1.您可以通过命令promot传递属性文件
-Dspring.config.location=classpath:job1.properties,classpath:job2.properties
2.方法是添加@PropertySource注释
公共类AppConfig
@PropertySource("classpath:config.properties")
public class LoadDbProps{
@value("${DATABASE_USER}")
private String dbUserName;
private String dbUserName;
}
稍后,您可以使用@Bean配置将此LoadDbProps设置为application.properties。有多种方法可以做到这一点 1.您可以通过命令promot传递属性文件
-Dspring.config.location=classpath:job1.properties,classpath:job2.properties
2.方法是添加@PropertySource注释
公共类AppConfig
@PropertySource("classpath:config.properties")
public class LoadDbProps{
@value("${DATABASE_USER}")
private String dbUserName;
private String dbUserName;
}
稍后,您可以使用@Bean配置将此LoadDbProps设置为application.properties。以下解决方案适合我:
@Configuration
public class DataSourceConfig {
@Bean
public DataSource getDataSource() {
Properties properties = null;
InputStream inputStream = null;
DataSourceBuilder dataSourceBuilder =null;
try {
properties = new Properties();
inputStream = new FileInputStream("./src/main/resources/config.properties");
properties.load(inputStream);
dataSourceBuilder = DataSourceBuilder.create();
dataSourceBuilder.url(properties.getProperty("url"));
dataSourceBuilder.username(properties.getProperty("user"));
dataSourceBuilder.password(properties.getProperty("password"));
}
catch(Exception ex) {
System.out.println("CONFIG EXCEPTION :"+ex);
}
return dataSourceBuilder.build();
}
}
有关更多详细信息,请参阅以下链接:
.以下解决方案对我有效:
@Configuration
public class DataSourceConfig {
@Bean
public DataSource getDataSource() {
Properties properties = null;
InputStream inputStream = null;
DataSourceBuilder dataSourceBuilder =null;
try {
properties = new Properties();
inputStream = new FileInputStream("./src/main/resources/config.properties");
properties.load(inputStream);
dataSourceBuilder = DataSourceBuilder.create();
dataSourceBuilder.url(properties.getProperty("url"));
dataSourceBuilder.username(properties.getProperty("user"));
dataSourceBuilder.password(properties.getProperty("password"));
}
catch(Exception ex) {
System.out.println("CONFIG EXCEPTION :"+ex);
}
return dataSourceBuilder.build();
}
}
有关更多详细信息,请参阅以下链接:
.我必须退回到Bean配置才能做到这一点,有没有办法将外部属性文件中的条目映射到application.properties?我必须退回到Bean配置才能做到这一点,有没有办法将外部属性文件中的条目映射到application.properties?