Java Spring引导:从另一个属性文件读取数据源属性

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

我想在SpringBoot中配置tomcat数据源,数据库的属性存储在另一个属性文件(比如dbConnection.properties)中,并使用不同的键

比如说

dbConnection.properties:

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?