весенняя загрузка: как настроить источник данных из свойств приложения - PullRequest
0 голосов
/ 14 октября 2018

Я хочу, чтобы следующие значения кода: 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 ]

0 голосов
/ 14 октября 2018

Как только вы определили свойства источника данных в 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;
    }
}

Или, если вы не хотите получать доступ к свойствам через Environment,Вы можете получить доступ по @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 голосов
/ 14 октября 2018

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...