springboot整合durid
阿新 • • 發佈:2018-11-02
本人對各種連線池瞭解的並不深入,也對各種連線池的效率停留在大佬們的口述中,偶爾一次機會遇到了durid,感覺它的監控介面是如此的強大,由此激發我整合durid的興趣。durid的監控介面如下:
首先需要做的是引用maven依賴,每次都是按照下載數比較高的版本進行使用的(想必有很多人與我一樣),此處使用的版本是1.1.1版本。
<!--阿里巴巴druid資料庫連線池--><!--http://localhost:8080/druid/index.html--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.1</version> </dependency>
將application.yml改為如下格式的配置,配置內容不多講,註解已經寫的很詳細了。
server: port: 2048 spring: profiles: active: dev druid: allow: #允許登陸的IP地址 ip: 127.0.0.1 login: #登陸的賬戶密碼 user_name: root password: root --- spring: profiles: dev datasource: driverClassName: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/xichuan?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false username: root password: root type: com.alibaba.druid.pool.DruidDataSource # 連線池的配置資訊 # 初始化大小,最小等待連線數量,最大等待連線數量,最大連線數 initialSize: 1 minIdle: 1 maxIdle: 5 maxActive: 20 # 配置獲取連線等待超時的時間 maxWait: 60000 # 配置間隔多久才進行一次檢測,檢測需要關閉的空閒連線,單位是毫秒 timeBetweenEvictionRunsMillis: 60000 # 配置一個連線在池中最小生存的時間,單位是毫秒 minEvictableIdleTimeMillis: 300000 validationQuery: SELECT 1 FROM DUAL testWhileIdle: true testOnBorrow: true testOnReturn: false # 開啟PSCache,並且指定每個連線上PSCache的大小 poolPreparedStatements: false maxPoolPreparedStatementPerConnectionSize: 20 # 配置監控統計攔截的filters,去掉後監控介面sql無法統計,'wall'用於防火牆 filters: stat,wall,log4j # 通過connectProperties屬性來開啟mergeSql功能;慢SQL記錄 connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 # 合併多個DruidDataSource的監控資料 #spring.datasource.useGlobalDataSourceStat=true
新增的duridConfig配置檔案,配置資訊一看就知道是幹什麼了,其中一定要配置durid的資料來源,不然無法獲取到sql監控與防火牆監控。
@Configuration public class DruidConfig { private static final Logger log = LoggerFactory.getLogger(DruidConfig.class); @Value("${druid.login.user_name}") private String userName; @Value("${druid.login.password}") private String password; @Value("${druid.allow.ip}") private String allowIp; /**必須配置資料來源,不然無法獲取到sql監控,與sql防火牆監控*/ @Bean(name = "default_databaseSource") @ConfigurationProperties(prefix="spring.datasource") public DataSource druidDataSource() { return new DruidDataSource(); } @Bean public ServletRegistrationBean druidServlet() { log.info("init Druid Servlet Configuration "); ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(); servletRegistrationBean.setServlet(new StatViewServlet()); servletRegistrationBean.addUrlMappings("/druid/*"); Map<String, String> initParameters = new HashMap<>(); initParameters.put("loginUsername", userName);// 使用者名稱 initParameters.put("loginPassword", password);// 密碼 initParameters.put("resetEnable", "false");// 禁用HTML頁面上的“Reset All”功能 //initParameters.put("allow", allowIp); // IP白名單 (沒有配置或者為空,則允許所有訪問) //initParameters.put("deny", "");// IP黑名單 (存在共同時,deny優先於allow) servletRegistrationBean.setInitParameters(initParameters); return servletRegistrationBean; } @Bean public FilterRegistrationBean filterRegistrationBean() { FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(); filterRegistrationBean.setFilter(new WebStatFilter()); filterRegistrationBean.addUrlPatterns("/*"); filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"); return filterRegistrationBean; } }
此時配置已經完成,只需要訪問:http://192.168.1.190:2048/druid/login.html,使用root/root 登進登陸即可使用了。