以下のコード値が欲しい: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;
}
....
....
....
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;
}
Pom.xmlまたはbuild.gradleに依存関係を追加するのを忘れたか、すでに追加している場合はビルドにその依存関係がない(実行mvn clean install)
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-Java</artifactId>
<version>6.0.6</version>
</dependency>
追加してもう一度お試しください