Blame view

src/main/java/com/zteits/oa/configuration/druid/DruidAutoConfiguration.java 4.84 KB
cc51d294   王富生   最初版本提交
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
  package com.zteits.oa.configuration.druid;
  
  import java.sql.SQLException;
  
  import javax.sql.DataSource;
  
  import org.springframework.beans.factory.annotation.Autowired;
  import org.springframework.boot.autoconfigure.AutoConfigureBefore;
  import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
  import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
  import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
  import org.springframework.boot.context.properties.EnableConfigurationProperties;
  import org.springframework.boot.web.servlet.FilterRegistrationBean;
  import org.springframework.boot.web.servlet.ServletRegistrationBean;
  import org.springframework.context.annotation.Bean;
  import org.springframework.context.annotation.Configuration;
  import org.springframework.util.StringUtils;
  
  import com.alibaba.druid.pool.DruidDataSource;
  import com.alibaba.druid.support.http.StatViewServlet;
  import com.alibaba.druid.support.http.WebStatFilter;
  
  /**
   * 
   * 
   * Copyright: Copyright (c) 2017  zteits
   * 
   * @ClassName: DruidAutoConfiguration.java
   * @Description: 
   * @version: v1.0.0
   * @author: liuzl
   * @date: 2017419   下午7:52:52 
   * Modification History:
   * Date             Author          Version            Description
   *---------------------------------------------------------*
   * 2017419      liuzl           v1.0.0               创建
   */
  @Configuration
  
  @EnableConfigurationProperties(DruidProperties.class)
  @ConditionalOnClass(DruidDataSource.class)
  @ConditionalOnProperty(prefix = "druid", name = "url")
  @AutoConfigureBefore(DataSourceAutoConfiguration.class)
  public class DruidAutoConfiguration {
  
      @Autowired
      private DruidProperties properties;
  
      @Bean
      public DataSource dataSource() throws SQLException {
          DruidDataSource dataSource = new DruidDataSource();
          dataSource.setUrl(properties.getUrl());
          dataSource.setUsername(properties.getUsername());
          dataSource.setPassword(properties.getPassword());
          if (properties.getInitialSize() > 0) {
              dataSource.setInitialSize(properties.getInitialSize());
          }
          if (properties.getMinIdle() > 0) {
              dataSource.setMinIdle(properties.getMinIdle());
          }
          if (properties.getMaxActive() > 0) {
              dataSource.setMaxActive(properties.getMaxActive());
          }
          if(!StringUtils.isEmpty(properties.getFilters())){
          	dataSource.setFilters(properties.getFilters());
          }
          if(!StringUtils.isEmpty(properties.getValidationQuery())){
          	dataSource.setValidationQuery(properties.getValidationQuery());
          }
          if(properties.getTimeBetweenEvictionRunsMillis() > 0){
          	dataSource.setTimeBetweenEvictionRunsMillis(properties.getTimeBetweenEvictionRunsMillis());
          }
          if(properties.getMinEvictableIdleTimeMillis() > 0){
          	dataSource.setMinEvictableIdleTimeMillis(properties.getMinEvictableIdleTimeMillis());
          }
          if(properties.getMaxWait() > 0){
          	dataSource.setMaxWait(properties.getMaxWait());
          }
          dataSource.setTestOnBorrow(properties.isTestOnBorrow());
          dataSource.setTestOnReturn(properties.isTestOnReturn());
          dataSource.setTestWhileIdle(properties.isTestOnWhileIdle());
          
          try {
              dataSource.init();
          } catch (SQLException e) {
              throw new RuntimeException(e);
          }
          return dataSource;
      }
  
      @Bean
      public ServletRegistrationBean DruidStatViewServle() {
          //org.springframework.boot.context.embedded.ServletRegistrationBean提供类的进行注册.
          ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
          //添加初始化参数:initParams
  
          //白名单:
          //servletRegistrationBean.addInitParameter("allow","192.168.1.106");
          //IP黑名单 (存在共同时,deny优先于allow) : 如果满足deny的话提示:Sorry, you are not permitted to view this page.
          // servletRegistrationBean.addInitParameter("deny", "192.168.1.73");
          //登录查看信息的账号密码.
          servletRegistrationBean.addInitParameter("loginUsername","admin");
          servletRegistrationBean.addInitParameter("loginPassword","123456");
          //是否能够重置数据.
          servletRegistrationBean.addInitParameter("resetEnable","false");
          return servletRegistrationBean;
      }
  
  
      @Bean
      public FilterRegistrationBean druidStatFilter(){
          FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
          //添加过滤规则.
          filterRegistrationBean.addUrlPatterns("/*");
          //添加不需要忽略的格式信息.
          filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
          return filterRegistrationBean;
      }
  
  }