zoukankan      html  css  js  c++  java
  • 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配置的方式是比较好的,如果有特殊需求的话,也可以在这里进行注入)。

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

  • 相关阅读:
    看看大对象是如何爆你的内存
    Web Api 多项目文档生成之SwaggerUI
    react-native执行 npm install cl.exe找不到 的问题
    在SourceTree中使用Git submodule
    [ElasticSearch] 如何使用中文分詞ik與繁簡轉換stconvert插件
    [Activator-HelloAkka] Create our Actors
    [Activator-HelloAkka] Define our Actors
    [Activator- HelloAkka] Define our Messages
    [Scala] Currying
    [Scala] Pattern Matching(模式匹配)
  • 原文地址:https://www.cnblogs.com/ceshi2016/p/6705179.html
Copyright © 2011-2022 走看看