web-dev-qa-db-fra.com

spring Boot: comment configurer la source de données à partir des propriétés de l'application

Je souhaite que les valeurs de code ci-dessous: DriverClassName, Url, Username, Password soient lues dans le fichier application.properties. J'utilise Spring Boot, Mysql, Hibernate et 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

Une fois que vous avez défini les propriétés de la source de données dans application.properties dans @SpringBootApplication, il vous configurera automatiquement datasource afin que vous puissiez supprimer DataSource configuration, mais si vous souhaitez personnaliser la configuration de votre source de données, la procédure ci-dessous devrait fonctionner comme Environment devrait vous donner accès aux propriétés.

@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;
    }
}

ou id ne veut pas accéder aux propriétés via Environmetn, vous pouvez accéder par @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

On dirait que vous oubliez d'ajouter une dépendance dans votre pom.xml ou build.gradle ou que votre build n'a pas cette dépendance si vous l'avez déjà ajouté (exécutez mvn clean install)

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

S'il vous plaît ajouter et essayez à nouveau

0
Deepak Jain