(16)Spring Boot使用Druid(编程注入)【从零开始学Spring Boot】

在上一节使用是配置文件的方式进行使用druid,这里在扩散下使用编程式进行使用Druid,在上一节我们新建了一个类:DruidConfiguration我在这个类进行编码:

 

Java代码   收藏代码
  1. package com.kfit.base.servlet;  
  2.   
  3. import java.sql.SQLException;  
  4.   
  5. import javax.sql.DataSource;  
  6.   
  7. import org.springframework.beans.factory.annotation.Value;  
  8.   
  9. import org.springframework.boot.context.embedded.FilterRegistrationBean;  
  10.   
  11. import org.springframework.boot.context.embedded.ServletRegistrationBean;  
  12.   
  13. import org.springframework.context.annotation.Bean;  
  14.   
  15. import org.springframework.context.annotation.Configuration;  
  16.   
  17. import com.alibaba.druid.pool.DruidDataSource;  
  18.   
  19. import com.alibaba.druid.support.http.StatViewServlet;  
  20.   
  21. import com.alibaba.druid.support.http.WebStatFilter;  
  22.   
  23.    
  24.   
  25. /** 
  26.  
  27.  * druid 配置.  
  28.  
  29.  *  
  30.  
  31.  * 这样的方式不需要添加注解:@ServletComponentScan 
  32.  
  33.  * @author Administrator 
  34.  
  35.  * 
  36.  
  37.  */  
  38.   
  39. @Configuration  
  40.   
  41. public class DruidConfiguration {  
  42.   
  43.          
  44.   
  45.        /** 
  46.  
  47.         * 注册一个StatViewServlet 
  48.  
  49.         * @return 
  50.  
  51.         */  
  52.   
  53.        @Bean  
  54.   
  55.        public ServletRegistrationBean DruidStatViewServle2(){  
  56.   
  57.               //org.springframework.boot.context.embedded.ServletRegistrationBean提供类的进行注册.  
  58.   
  59.               ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid2/*");  
  60.   
  61.                 
  62.   
  63.               //添加初始化参数:initParams  
  64.   
  65.                 
  66.   
  67.               //白名单:  
  68.   
  69.               servletRegistrationBean.addInitParameter("allow","127.0.0.1");  
  70.   
  71.               //IP黑名单 (存在共同时,deny优先于allow) : 如果满足deny的话提示:Sorry, you are not permitted to view this page.  
  72.   
  73.               servletRegistrationBean.addInitParameter("deny","192.168.1.73");  
  74.   
  75.               //登录查看信息的账号密码.  
  76.   
  77.               servletRegistrationBean.addInitParameter("loginUsername","admin2");  
  78.   
  79.               servletRegistrationBean.addInitParameter("loginPassword","123456");  
  80.   
  81.               //是否能够重置数据.  
  82.   
  83.               servletRegistrationBean.addInitParameter("resetEnable","false");  
  84.   
  85.               return servletRegistrationBean;  
  86.   
  87.        }  
  88.   
  89.          
  90.   
  91.        /**  
  92.   
  93.         * 注册一个:filterRegistrationBean  
  94.   
  95.         * @return  
  96.   
  97.         */  
  98.   
  99.        @Bean  
  100.   
  101.        public FilterRegistrationBean druidStatFilter2(){  
  102.   
  103.                 
  104.   
  105.               FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());  
  106.   
  107.                 
  108.   
  109.               //添加过滤规则.  
  110.   
  111.               filterRegistrationBean.addUrlPatterns("/*");  
  112.   
  113.                 
  114.   
  115.               //添加不需要忽略的格式信息.  
  116.   
  117.               filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid2/*");  
  118.   
  119.               return filterRegistrationBean;  
  120.   
  121.        }  
  122.   
  123.          
  124.   
  125.        /**  
  126.   
  127.         * 注册dataSouce,这里作为一个例子,只注入了部分参数信息,其它的参数自行扩散思维。  
  128.   
  129.         * @param driver  
  130.   
  131.         * @param url  
  132.   
  133.         * @param username  
  134.   
  135.         * @param password  
  136.   
  137.         * @param maxActive  
  138.   
  139.         * @return  
  140.   
  141.         */  
  142.   
  143.        @Bean  
  144.   
  145.     public DataSource druidDataSource(@Value("${spring.datasource.driverClassName}") String driver,  
  146.   
  147.                                       @Value("${spring.datasource.url}") String url,  
  148.   
  149.                                       @Value("${spring.datasource.username}") String username,  
  150.   
  151.                                       @Value("${spring.datasource.password}") String password,  
  152.   
  153.                                       @Value("${spring.datasource.maxActive}"int maxActive  
  154.   
  155.                                                               ) {  
  156.   
  157.         DruidDataSource druidDataSource = new DruidDataSource();  
  158.   
  159.         druidDataSource.setDriverClassName(driver);  
  160.   
  161.         druidDataSource.setUrl(url);  
  162.   
  163.         druidDataSource.setUsername(username);  
  164.   
  165.         druidDataSource.setPassword(password);  
  166.   
  167.         druidDataSource.setMaxActive(maxActive);  
  168.   
  169.           
  170.   
  171.         System.out.println("DruidConfiguration.druidDataSource(),url="+url+",username="+username+",password="+password);  
  172.   
  173.         try {  
  174.   
  175.             druidDataSource.setFilters("stat, wall");  
  176.   
  177.         } catch (SQLException e) {  
  178.   
  179.             e.printStackTrace();  
  180.   
  181.         }  
  182.   
  183.         return druidDataSource;  
  184.   
  185.     }  
  186.   
  187.          
  188.   
  189. }  
  190.   
  191.    

 

 

 

这里的区别在于加入一个方法:druidDataSource进行数据源的注入(当然这么一选择上一章节在application.properties配置的方式是比较好,如果有特殊需求的话,也可以在这里进行注入)

如果同时进行了编程式的注入和配置的注入,配置的就无效了。

-----------------------------------------------------------------

实际中推荐使用配置文件的方式,参考:

(15)Spring Boot使用Druid和监控配置【从零开始学Spring Boot】:http://412887952-qq-com.iteye.com/blog/2292362

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值