原因:由于druid不是springboot内置的数据源,所以在application.properties文件中就不能很简单的进行配置,得手动进行配置。
注:本文只设置了几个常用的属性,可按需追加。
1、为了方便各项属性的配置,可以使用接口对属性进行管理:
public interface DataSourceConfig {
String URL = "${spring.datasource.url}";
String USERNAME = "${spring.datasource.username}";
String PASSWORD = "${spring.datasource.password}";
String TYPE = "${spring.datasource.type}";
String INITIALSIZE = "${spring.datasource.initialSize}";
String MINIDLE = "${spring.datasource.minIdle}";
String MAXACTIVE = "${spring.datasource.maxActive}";
}
2、创建一个配置属性类:
@Component
public class DataSourceProperties implements DataSourceConfig {
@Value(URL)
private String url;
@Value(USERNAME)
private String username;
@Value(PASSWORD)
private String password;
@Value(TYPE)
private String type;
@Value(INITIALSIZE)
private int initialSize;
@Value(MINIDLE)
private int minIdle;
@Value(MAXACTIVE)
private int maxActive;
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public int getInitialSize() {
return initialSize;
}
public void setInitialSize(int initialSize) {
this.initialSize = initialSize;
}
public int getMinIdle() {
return minIdle;
}
public void setMinIdle(int minIdle) {
this.minIdle = minIdle;
}
public int getMaxActive() {
return maxActive;
}
public void setMaxActive(int maxActive) {
this.maxActive = maxActive;
}
}
3、把各项属性设置进druid,并使用@Bean注解把druid丢给spring boot:
@Configuration
public class DruidDataSourceConfig {
@Bean
public DataSource druidDataSource(DataSourceProperties properties) {
DruidDataSource datasource = new DruidDataSource();
datasource.setUrl(properties.getUrl());
datasource.setUsername(properties.getUsername());
datasource.setPassword(properties.getPassword());
datasource.setDbType(properties.getType());
datasource.setInitialSize(properties.getInitialSize());
datasource.setMinIdle(properties.getMinIdle());
datasource.setMaxActive(properties.getMaxActive());
return datasource;
}
}
4、在application.properties文件中进行各项属性的配置:
注:必须加上spring.datasource.type=com.alibaba.druid.pool.DruidDataSource,因为springboot2.0以后默认使用hikari数据源,这项属性表示修改数据源为druid。
###################druid###########################
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.initialSize=1
spring.datasource.minIdle=1
spring.datasource.maxActive=3