学记:spring boot使用官网推荐以外的其他数据源druid

  虽然spring boot提供了4种数据源的配置,但是如果要使用其他的数据源怎么办?例如,有人就是喜欢druid可以监控的强大功能,有些人项目的需要使用c3p0,那么,我们就没办法了吗?我们就要编程式新建一个数据源了吗?不用了!spring boot 1.4.1.RELEASE为我们提供了简洁的方式使用自己想要的数据源。

  网上也有其他数据源的配置方法,但是都是编程式新建一个数据源,太繁琐了。我在这里记录一下官网的做法:

1、Configure a DataSource

官网介绍:http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#howto-configure-a-datasource

@Configuration
@EnableConfigurationProperties(DataSourceProperties.class)
public class DruidConfiguration {

    @Bean
    @ConfigurationProperties(prefix="spring.datasource.druid")
    public DataSource dataSource(DataSourceProperties properties) {
        return properties.initializeDataSourceBuilder()
                // additional customizations
                .build();
    }
}

说明:@ConfigurationProperties(prefix="spring.datasource.druid"),前缀可以自己随意。

2、配置文件

spring:
    datasource:
        name: test
        url: jdbc:mysql://localhost:3306/test
        username: root
        password: root
        # 使用druid数据源
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.jdbc.Driver
        druid:
          filters: stat,wall,log4j
          maxActive: 20
          initialSize: 1
          maxWait: 60000
          minIdle: 1
          timeBetweenEvictionRunsMillis: 60000
          minEvictableIdleTimeMillis: 300000
          validationQuery: SELECT 1 FROM DUAL
          testWhileIdle: true
          testOnBorrow: false
          testOnReturn: false
          poolPreparedStatements: true
          maxOpenPreparedStatements: 20

  以上步骤就配置好druid了,在验证druid的配置属性是否有成功注入的时候,可以注入DataSource,断点观察DataSource的属性validationQuery是否和你写的一样。

3、配置提示

有强迫症可以看看,这个是配置提示的功能,不是必要项。

添加依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

在resources下新建META-INF,在建一个additional-spring-configuration-metadata.json文件

{
  "properties": [
    {
      "name": "spring.datasource.druid.maxActive",
      "type": "java.lang.String",
      "description": "Description for spring.datasource.druid.maxActive."
    },
    {
      "name": "spring.datasource.druid.initialSize",
      "type": "java.lang.String",
      "description": "Description for spring.datasource.druid.initialSize."
    },
    {
      "name": "spring.datasource.druid.filters",
      "type": "java.lang.String",
      "description": "Description for spring.datasource.druid.filters."
    },
    {
      "name": "spring.datasource.druid.maxWait",
      "type": "java.lang.String",
      "description": "Description for spring.datasource.druid.maxWait."
    },
    {
      "name": "spring.datasource.druid.minIdle",
      "type": "java.lang.String",
      "description": "Description for spring.datasource.druid.minIdle."
    },
    {
      "name": "spring.datasource.druid.timeBetweenEvictionRunsMillis",
      "type": "java.lang.String",
      "description": "Description for spring.datasource.druid.timeBetweenEvictionRunsMillis."
    },
    {
      "name": "spring.datasource.druid.minEvictableIdleTimeMillis",
      "type": "java.lang.String",
      "description": "Description for spring.datasource.druid.minEvictableIdleTimeMillis."
    },
    {
      "name": "spring.datasource.druid.validationQuery",
      "type": "java.lang.String",
      "description": "Description for spring.datasource.druid.validationQuery."
    },
    {
      "name": "spring.datasource.druid.testWhileIdle",
      "type": "java.lang.String",
      "description": "Description for spring.datasource.druid.testWhileIdle."
    },
    {
      "name": "spring.datasource.druid.testOnBorrow",
      "type": "java.lang.String",
      "description": "Description for spring.datasource.druid.testOnBorrow."
    },
    {
      "name": "spring.datasource.druid.testOnReturn",
      "type": "java.lang.String",
      "description": "Description for spring.datasource.druid.testOnReturn."
    },
    {
      "name": "spring.datasource.druid.poolPreparedStatements",
      "type": "java.lang.String",
      "description": "Description for spring.datasource.druid.poolPreparedStatements."
    },
    {
      "name": "spring.datasource.druid.maxOpenPreparedStatements",
      "type": "java.lang.String",
      "description": "Description for spring.datasource.druid.maxOpenPreparedStatements."
    }
  ]
}

这样在使用druid的时候IDEA就会出现提示了。

注意:如果没有出现提示,可以断点数据源,观察相应的配置就行了(大概):)

4、druid监控

网上有很多例子,这个就不多说了。

/**
     * 注册一个StatViewServlet
     * @return
     */
    @Bean
    public ServletRegistrationBean druidStatViewServle(){
        //org.springframework.boot.context.embedded.ServletRegistrationBean提供类的进行注册.
        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");

        //添加初始化参数: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 druidStatFilter(){

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

        //添加过滤规则.
        filterRegistrationBean.addUrlPatterns("/*");

        //添加不需要忽略的格式信息.
        filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
        return filterRegistrationBean;
    }

怎么使用可以看druid官网。

时间: 2024-10-05 10:15:53

学记:spring boot使用官网推荐以外的其他数据源druid的相关文章

官网推荐

官网推荐 http://www.bootcss.com http://jquery.cuishifeng.cn http://www.fontawesome.com.cn/faicons https://github.com http://mishengqiang.com/sweetalert 常用工具 http://v3.processon.com/diagrams 好玩的东西 http://search.chongbuluo.com http://dig.chouti.com http://

在Spring的新版官网中下载spring的jar包操作步骤

第一步:百度搜索Spring 第二步:点击第一个链接进入 第三步:看图吧: 第四步: 第五步: 第六步: 第七步: 第八步: 第九步: 第十步: 第十一步: 第十二步: 在Spring的新版官网中下载spring的jar包操作步骤

Spring众多jar包的特点,及Spring jar包官网下载方法

下面给大家说说spring众多jar包的特点吧,无论对于初学spring的新手,还是spring高手,这篇文章都会给大家带来知识上的收获,如果你已经十分熟悉本文内容就当做一次温故知新吧.spring.jar 是包含有完整发布的单个jar包,spring.jar中除了spring-mock.jar里所包含的内容外其他所有jar包的内容,因为只有在研发环境下才会用到spring-mock.jar来进行辅助测试,正式应用系统中是用不得这些类的. 除了spring.jar文件,Spring还包括有其他1

Spring Boot学习进阶笔记(四)-多数据源配置(JdbcTemplate、Spring-data-jpa)

在实际开发过程中,往往我们需要链接多个数据库进行操作,所以多数据源的配置就在所难免了. 一.JdbcTemplate支持: spring boot配置多数据源比较简单 1)修改配置文件"application.properties" p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Monaco; color: #3933ff } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0

【OAuth2学习之路】Spring Security OAuth官网文档翻译

现将开发文档翻译出来,因为看英文实在是比较吃力的. 首先看下官方的指南Developers Guide,OAuth的两个版都都有.本文看的是OAuth2的开发指南. 翻译如下: Spring Security OAuth2开发指南(OAuth 2 Developers Guide) 1.入门(Introduction) 2.OAuth2.0提供程序(OAuth 2.0 Provider) 3.OAuth2.0提供程序的实现(OAuth 2.0 Provider Implementation) 4

Spring Boot学习大全(入门)

Spring Boot学习(入门) 1.了解Spring boot Spring boot的官网(https://spring.io),我们需要的一些jar包,配置文件都可以在下载.添置书签后,我自己常常来看看spring boot这老兄,以及后面所需要的Spring Cloud.Spring Cloud Data Flow. 2.Spring Boot的简介 随着动态语言的流行( Ruby, Groovy, Scala, Node. js)Java的开发显得格外的笨重,繁多的配置,低下的开发效

spring boot无法启动,或者正常启动之后无法访问报404的解决办法

以前用spring boot都是用idea的自动创建,或者是用的Jhipster创建的,就没有深究怎么去搭建.但是今天晚上心血来潮,想自己搭一个demo来整合一些技术,于是就花一点时间来手动搭.因为今天网络有点不好,所以spring boot的官网一直打不开,也就导致了无法阅读官方文档,就按照自己的记忆去搭于是遇到了以下两个问题 一 启动不了,一直报错,而且报的错很多时候还不一样.我就不列出报的什么错了,spring boot已经这么集成化了,难道我都还要配错?肯定是细节,和代码没有关系.于是找

Spring Boot 参数校验

1.背景介绍 开发过程中,后台的参数校验是必不可少的,所以经常会看到类似下面这样的代码 这样写并没有什么错,还挺工整的,只是看起来不是很优雅而已. 接下来,用Validation来改写这段 2.Spring Boot文档中的Validation 在Spring Boot的官网中,关于Validation只是简单的提了一句,如下 其实,Spring Validator和Hibernate Validator是两套Validator,可以混着用,这里我们用Hibernate Validator 3.

Spring Boot整合MyBatis学习总结

公司的很多项目都陆陆续续引入了Spring Boot,通过对Spring Boot的接触了解发现其真的是大大地简化了开发.简化了依赖配置,很多功能注解一下就可以实现,真的是太方便了.下面记录了一个Spring Boot的入门程序实现. 1,pom.xml文件: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance&qu