spring boot 配置druid

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

(0)
上一篇 2021年11月4日 13:43
下一篇 2021年11月4日 13:43

相关推荐

发表回复

登录后才能评论