`

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

阅读更多

 à悟空学院:https://t.cn/Rg3fKJD

学院中有Spring Boot相关的课程!

SpringBoot视频:http://t.cn/A6ZagYTi

Spring Cloud视频:http://t.cn/A6ZagxSR

SpringBoot Shiro视频:http://t.cn/A6Zag7IV

SpringBoot交流平台:https://t.cn/R3QDhU0

SpringData和JPA视频:http://t.cn/A6Zad1OH

SpringSecurity5.0视频:http://t.cn/A6ZadMBe

Sharding-JDBC分库分表实战http://t.cn/A6ZarrqS

分布式事务解决方案「手写代码」:http://t.cn/A6ZaBnIr

 

 

在上一节使用是配置文件的方式进行使用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;

import org.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

       public ServletRegistrationBean DruidStatViewServle2(){

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

              ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid2/*");

              

              //添加初始化参数:initParams

              

              //白名单:

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

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

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

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

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

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

              //是否能够重置数据.

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

              return servletRegistrationBean;

       }

       

       /**

        * 注册一个:filterRegistrationBean

        * @return

        */

       @Bean

       public FilterRegistrationBean druidStatFilter2(){

              

              FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());

              

              //添加过滤规则.

              filterRegistrationBean.addUrlPatterns("/*");

              

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

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

              return filterRegistrationBean;

       }

       

       /**

        * 注册dataSouce,这里作为一个例子,只注入了部分参数信息,其它的参数自行扩散思维。

        * @param driver

        * @param url

        * @param username

        * @param password

        * @param maxActive

        * @return

        */

       @Bean

    public DataSource druidDataSource(@Value("${spring.datasource.driverClassName}") String driver,

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

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

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

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

                                                              ) {

        DruidDataSource druidDataSource = 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();

        }

        return druidDataSource;

    }

       

}

 

 

 

 

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

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

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

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

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

 

 

 

 视频&交流平台

à悟空学院:https://t.cn/Rg3fKJD

学院中有Spring Boot相关的课程!

SpringBoot视频:http://t.cn/A6ZagYTi

Spring Cloud视频:http://t.cn/A6ZagxSR

SpringBoot Shiro视频:http://t.cn/A6Zag7IV

SpringBoot交流平台:https://t.cn/R3QDhU0

SpringData和JPA视频:http://t.cn/A6Zad1OH

SpringSecurity5.0视频:http://t.cn/A6ZadMBe

Sharding-JDBC分库分表实战http://t.cn/A6ZarrqS

分布式事务解决方案「手写代码」:http://t.cn/A6ZaBnIr

 

网易云课堂视频最新更新

第十一章 Spring Boot 日志

1、spring boot日志—理论

2、Spring Boot日志-logback

3、Spring Boot日志-log4j2

第十二章 Spring Boot 知识点2

1、spring boot 服务配置和部署

2、Spring Boot 定制URL匹配规则

 

 

32 Spring Boot使用@SpringBootApplication注解从零开始学Spring Boot 

 

31 Spring Boot导入XML配置【从零开始学Spring Boot

 

 

 

更多查看博客: http://412887952-qq-com.iteye.com/

1
10
分享到:
评论
2 楼 qq1488888 2016-08-16  
WuNan2 写道
public DataSource druidDataSource 这个方法起误导作用,如此生产的连接池仅注入了maxActive属性,其它属性通过参数挨个注入吗?这不是个懒惰程序猿应该干的。

正确的方式是保留前两个监测的@Bean,DataSource在application.properties中加:spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
然后:
spring.datasource.initialSize=5
spring.datasource.minIdle=5
spring.datasource.maxActive=50
……
等等这些参数配了就生效。


1.4版本里面默认只支持4种连接池的配置方式,如果要用第三方就是要这样子的注入了
1 楼 WuNan2 2016-04-22  
public DataSource druidDataSource 这个方法起误导作用,如此生产的连接池仅注入了maxActive属性,其它属性通过参数挨个注入吗?这不是个懒惰程序猿应该干的。

正确的方式是保留前两个监测的@Bean,DataSource在application.properties中加:spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
然后:
spring.datasource.initialSize=5
spring.datasource.minIdle=5
spring.datasource.maxActive=50
……
等等这些参数配了就生效。

相关推荐

Global site tag (gtag.js) - Google Analytics