application.yaml
spring:
main:
banner-mode: console
datasource:
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://localhost:3306/test
username: test
password: 123456
# driver-class-name: com.mysql.jdbc.Driver
# druid pool customize configuration
driverClassName: com.mysql.jdbc.Driver
initialSize: 10
minIdle: 5
maxActive: 20
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: select 1 from dual
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
removeAbandoned: true
removeAbandonedTimeout: 1800
logAbandoned: true
filters: stat,wall,slf4j
logSlowSql: true
loginUsername: test
loginPassword: 123456
jdbc:
template:
max-rows: 1000
query-timeout: 1200
jpa:
hibernate:
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
logging:
level:
root: debug
DruidConfiguration
@Component
@ConfigurationProperties(prefix = "spring.datasource")
public class DruidConfiguration {
private String url;
private String username;
private String password;
private String driverClassName;
private int initialSize;
private int minIdle;
private int maxActive;
private int maxWait;
private int timeBetweenEvictionRunsMillis;
private int minEvictableIdleTimeMillis;
private String validationQuery;
private boolean testWhileIdle;
private boolean testOnBorrow;
private boolean testOnReturn;
private boolean removeAbandoned;
private int removeAbandonedTimeout;
private boolean logAbandoned;
private String filters;
private boolean logSlowSql;
private String loginUsername;
private String loginPassword;
}
@Configuration配置
@Configuration
public class CustomizeConfig {
private final static Logger LOGGER = LoggerFactory.getLogger(CustomizeConfig.class);
@Autowired
private DruidConfiguration druidConfiguration;
@Bean
public DataSource druidDataSource(){
DruidDataSource datasource = new DruidDataSource();
datasource.setUrl(druidConfiguration.getUrl());
datasource.setUsername(druidConfiguration.getUsername());
datasource.setPassword(druidConfiguration.getPassword());
datasource.setDriverClassName(druidConfiguration.getDriverClassName());
datasource.setInitialSize(druidConfiguration.getInitialSize());
datasource.setMinIdle(druidConfiguration.getMinIdle());
datasource.setMaxActive(druidConfiguration.getMaxActive());
datasource.setMaxWait(druidConfiguration.getMaxWait());
datasource.setTimeBetweenEvictionRunsMillis(druidConfiguration.getTimeBetweenEvictionRunsMillis());
datasource.setMinEvictableIdleTimeMillis(druidConfiguration.getMinEvictableIdleTimeMillis());
datasource.setValidationQuery(druidConfiguration.getValidationQuery());
datasource.setTestWhileIdle(druidConfiguration.isTestWhileIdle());
datasource.setTestOnBorrow(druidConfiguration.isTestOnBorrow());
datasource.setTestOnReturn(druidConfiguration.isTestOnReturn());
datasource.setRemoveAbandoned(druidConfiguration.isRemoveAbandoned());
datasource.setRemoveAbandonedTimeout(druidConfiguration.getRemoveAbandonedTimeout());
datasource.setLogAbandoned(druidConfiguration.isLogAbandoned());
try {
datasource.setFilters(druidConfiguration.getFilters());
} catch (SQLException e) {
LOGGER.error("datasource.setFilters occur error.", e);
}
return datasource;
}
@Bean
public ServletRegistrationBean druidServlet() {
ServletRegistrationBean reg = new ServletRegistrationBean();
reg.setServlet(new StatViewServlet());
reg.addUrlMappings("/druid/*");
reg.addInitParameter("loginUsername", druidConfiguration.getLoginUsername());
reg.addInitParameter("loginPassword", druidConfiguration.getLoginPassword());
reg.addInitParameter("logSlowSql", String.valueOf(druidConfiguration.isLogSlowSql()));
return reg;
}
@Bean
public FilterRegistrationBean filterRegistrationBean() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(new WebStatFilter());
filterRegistrationBean.addUrlPatterns("/*");
filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
filterRegistrationBean.addInitParameter("profileEnable", "true");
return filterRegistrationBean;
}
}
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/opensource/186943.html