it-swarm.com.ru

весенняя загрузка: как настроить источник данных из свойств приложения

Я хочу, чтобы следующие значения кода: DriverClassName, Url, Username, Password были прочитаны из файла application.properties, как это сделать? Я использую Spring Boot, Mysql, Hibernate и Spring Rest.

DatasourceConfig.Java

    //This is working fine with inline value specified as below (DriverClassName, Url,Username,Password
    @Configuration
    @EnableTransactionManagement
    @EnableJpaRepositories(basePackages = "com.nouhoun.springboot.jwt.integration.repository")
    public class DatasourceConfig {

        @Bean
        public DataSource datasource() throws PropertyVetoException {
               final DriverManagerDataSource dataSource = new DriverManagerDataSource();
               dataSource.setDriverClassName("com.mysql.jdbc.Driver");
               dataSource.setUrl("jdbc:mysql://localhost:3306/fdb?createDatabaseIfNotExist=true");
               dataSource.setUsername("root");
               dataSource.setPassword("");
               return dataSource;
    }
   ....
   ....
   ....
2
Ashutosh Singh

После того как вы определили свойства источника данных в application.properties в @SpringBootApplication, он автоматически настроит вас datasource, чтобы вы могли удалить DataSource configuration, но все же, если вы хотите настроить конфигурацию источника данных, то ниже должно работать, так как Environment предоставит вам доступ к свойствам.

@Configuration
@PropertySource(value= {"classpath:application.properties"})
public class DatasourceConfig {

    @Autowired
    Environment environment;

    @Bean
    public DataSource datasource() throws PropertyVetoException {
        final DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName(environment.getProperty("spring.datasource.driver-class-name"));
        dataSource.setUrl(environment.getProperty("spring.datasource.url"));
        dataSource.setUsername(environment.getProperty("spring.datasource.username"));
        dataSource.setPassword(environment.getProperty("spring.datasource.password"));
        return dataSource;
    }
}

или id не хочет обращаться к свойствам через Environmetn, вы можете получить доступ по @Value

  @Value("${spring.datasource.driver-class-name}")
    private String driverName;

    @Value("${spring.datasource.url}")
    private String url;

    @Value("${spring.datasource.username}")
    private String userName;

    @Value("${spring.datasource.password}")
    private String password;

    @Bean
    public DataSource datasource() throws PropertyVetoException {
        final DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName(driverName);
        dataSource.setUrl(url);
        dataSource.setUsername(userName);
        dataSource.setPassword(password);
        return dataSource;
    }
0
kj007

Кажется, вы забыли добавить зависимость в ваш pom.xml или build.gradle, или ваша сборка не имеет этой зависимости, если вы уже добавили (запустите mvn clean install )

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-Java</artifactId>
    <version>6.0.6</version>
</dependency>

Пожалуйста, добавьте и попробуйте снова

0
Deepak Jain