虽然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官网。

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

  1. spring原理案例-基本项目搭建 01 spring framework 下载 官网下载spring jar包

    下载spring http://spring.io/ 最重要是在特征下面的这段话,需要注意: All avaible features and modules are described in the ...

  2. Kudu安装(官网推荐的步骤)(installing build Kudu from source)

    不多说,直接上干货! Kudu安装前的建议说明(博主推荐) 这是安装Kudu的另一种方法 Kudu安装(官网推荐的步骤)(installing Kudu using parcels or packag ...

  3. Kudu安装(官网推荐的步骤)(installing Kudu using parcels or packages)

    不多说,直接上干货! Kudu安装前的建议说明(博主推荐) Kudu官网推荐的步骤: 本篇博文是installing Kudu using parcels or packages的方式. http:/ ...

  4. 【spring boot】12.spring boot对多种不同类型数据库,多数据源配置使用

    2天时间,终于把spring boot下配置连接多种不同类型数据库,配置多数据源实现! ======================================================== ...

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

    下面给大家说说spring众多jar包的特点吧,无论对于初学spring的新手,还是spring高手,这篇文章都会给大家带来知识上的收获,如果你已经十分熟悉本文内容就当做一次温故知新吧.spring. ...

  6. 下雨天,适合学「Spring Boot」

      北方的闷热,让不少小伙伴盼着下雨,前几天北京下了场大雨,杭州也紧跟这下了场雨,就在昨天原本还很闷热的天,突然就飘泼大雨了.今天也断断续续的下着小雨,一觉醒来已经是10点了.有句话说:懒惰是人的天性 ...

  7. Spring Boot系列:七、 实现Mybatis多数据源切换

    一.引入相关maven配置 mybatis;  mysql驱动:jdbc <dependency> <groupId>org.mybatis.spring.boot</g ...

  8. 学习Spring Boot:(二十四)多数据源配置与使用

    前言 随着业务量增大,可能有些业务不是放在同一个数据库中,所以系统有需求使用多个数据库完成业务需求,我们需要配置多个数据源,从而进行操作不同数据库中数据. 正文 JdbcTemplate 多数据源 配 ...

  9. Spring Boot教程(三十二)多数据源配置与使用

    之前在介绍使用JdbcTemplate和Spring-data-jpa时,都使用了单数据源.在单数据源的情况下,Spring Boot的配置非常简单,只需要在application.propertie ...

随机推荐

  1. Java - 网络编程

    Java的网络编程学习,关于计算机基础的学习参考:计算机网络基础学习 - sqh.     参考:  

  2. Golang接口(interface)三个特性(译文)

    The Laws of Reflection 原文地址 第一次翻译文章,请各路人士多多指教! 类型和接口 因为映射建设在类型的基础之上,首先我们对类型进行全新的介绍. go是一个静态性语言,每个变量都 ...

  3. php简单实现socket通信

    socket通信的原理在这里就不说了,它的用途还是比较广泛的,我们可以使用socket来做一个API接口出来,也可以使用socket来实现两个程序之间的通信,我们来研究一下在php里面如何实现sock ...

  4. linux(七)__shell脚本编程

    一.什么是shell脚本 shell除了是命令解释器之外还是一种编程语言,用shell编写的程序类似于DOS下的批处理程序. 它是用户与操作系统之间的一个接口. shell脚本语言非常擅长处理文本类型 ...

  5. System.nanoTime与System.currentTimeMillis的理解与区别

    System类代表系统,系统级的很多属性和控制方法都放置在该类的内部.该类位于java.lang包. 平时产生随机数时我们经常拿时间做种子,比如用System.currentTimeMillis的结果 ...

  6. JS实现文字截取(雾)

    今天在跳板群那里看到一个神奇的样式,效果: 感觉十分神奇,因为一开始以为他是只有一个P元素包着文字然后最后一个自动截取文字,而且最后一行还可以提前截取???这怎么做到的,然后想了一下css怎么做,好像 ...

  7. 集成shareSDK错误总结(新浪微博)

    错误1. . 以上错误是由于没有添加-ObjC的原因,在targets->Build Setting ->Other Linker Flags中添加-ObjC 添加方法如下 错误2 授权回 ...

  8. [Android]Android MVP&依赖注入&单元测试

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5422443.html Android MVP&依赖注入 ...

  9. swift学习笔记2——函数、闭包

    之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...

  10. PostgreSQL杀掉死锁的链接

    查到对应的用户的活动连接: select * from pg_stat_activity where username="xxx"; 杀掉死锁的连接: select pg_term ...