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

转载:http://blog.csdn.net/linxingliang/article/details/52001744

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

 

package com.kfit.base.servlet;

import Java.sql.SQLException;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.boot.context.embedded.FilterRegistrationBean;

importorg.springframework.boot.context.embedded.ServletRegistrationBean;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import com.alibaba.druid.pool.DruidDataSource;

import com.alibaba.druid.support.http.StatViewServlet;

import com.alibaba.druid.support.http.WebStatFilter;

 

/**

 * druid 配置.

 *

 * 这样的方式不需要添加注解:@ServletComponentScan

 * @author Administrator

 *

 */

@Configuration

public class DruidConfiguration {

      

       /**

        * 注册一个StatViewServlet

        * @return

        */

       @Bean

       publicServletRegistrationBean DruidStatViewServle2(){

              //org.springframework.boot.context.embedded.ServletRegistrationBean提供类的进行注册.

              ServletRegistrationBeanservletRegistrationBean = new ServletRegistrationBean(newStatViewServlet(),"/druid2/*");

             

              //添加初始化参数:initParams

             

              //白名单:

              servletRegistrationBean.addInitParameter("allow","127.0.0.1");

              //IP黑名单 (存在共同时,deny优先于allow): 如果满足deny的话提示:Sorry, you arenot permitted to view this page.

              servletRegistrationBean.addInitParameter("deny","192.168.1.73");

              //登录查看信息的账号密码.

              servletRegistrationBean.addInitParameter("loginUsername","admin2");

              servletRegistrationBean.addInitParameter("loginPassword","123456");

              //是否能够重置数据.

              servletRegistrationBean.addInitParameter("resetEnable","false");

              returnservletRegistrationBean;

       }

      

       /**

        * 注册一个:filterRegistrationBean

        * @return

        */

       @Bean

       publicFilterRegistrationBean druidStatFilter2(){

             

              FilterRegistrationBeanfilterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());

             

              //添加过滤规则.

              filterRegistrationBean.addUrlPatterns("/*");

             

              //添加不需要忽略的格式信息.

              filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid2/*");

              returnfilterRegistrationBean;

       }

      

       /**

        * 注册dataSouce,这里只是一个简单的例子,只注入了部分参数,其它自行注入。

        * @param driver

        * @param url

        * @param username

        * @param password

        * @param maxActive

        * @return

        */

       @Bean

    public DataSourcedruidDataSource(@Value("${spring.datasource.driverClassName}") Stringdriver,

                                     @Value("${spring.datasource.url}") String url,

                                      @Value("${spring.datasource.username}")String username,

                                     @Value("${spring.datasource.password}") String password,

                                     @Value("${spring.datasource.maxActive}") int maxActive

                                                              ) {

        DruidDataSourcedruidDataSource = new DruidDataSource();

       druidDataSource.setDriverClassName(driver);

       druidDataSource.setUrl(url);

       druidDataSource.setUsername(username);

        druidDataSource.setPassword(password);

       druidDataSource.setMaxActive(maxActive);

       

       System.out.println("DruidConfiguration.druidDataSource(),url="+url+",username="+username+",password="+password);

        try {

           druidDataSource.setFilters("stat, wall");

        } catch(SQLException e) {

           e.printStackTrace();

        }

        returndruidDataSource;

    }

      

}

 

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

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

posted @ 2017-04-13 17:55  小学生II  阅读(236)  评论(0编辑  收藏  举报