虽然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. python之最强王者(5)——Nunber(数字)

    1.Python Number(数字) Python Number 数据类型用于存储数值. 数据类型是不允许改变的,这就意味着如果改变 Number 数据类型的值,将重新分配内存空间. 以下实例在变量 ...

  2. Java编程里的类和对象

    像我们搞计算机这块的,都知道这么一件事,当前的计算机编程语言主要分为两大块,一为面向过程,二为面向对象.Java就是一门纯面向对象的语言.学习了一个月左右的Java,在下对于Java当中的类和对象有了 ...

  3. Android 手机卫士3--设置中心

    1.要点击九宫格中的条目,需要注册点击事件 // 注册九宫格单个条目的点击事件 gv_home.setOnItemClickListener(new OnItemClickListener() { / ...

  4. JavaWeb之XML详解

    XML语言 什么是XML? XML是指可扩展标记语言(eXtensible Markup Language),它是一种标记语言,很类似HTML.它被设计的宗旨是传输数据,而非显示数据. XML标签没有 ...

  5. co源码解读

    背景: 闲来无事,翻了下co的源码来看,源码短小精悍,算上注释,一共240行左右: 决定写一篇博客来记录下学习的心得. TJ大神的co:https://github.com/tj/co 作用: co通 ...

  6. android SQLite数据库总结

    SQLite SQLite是一种超轻量级的嵌入式数据库,大小只有几百KB,但是其语法支持标准SQL语法,同时还遵循了数据库的ACID事务,所以学过其他数据库的开发人员都很容易掌握其使用. sql语法就 ...

  7. 【原】HTTP in iOS你看我就够

    声明:本文是本人 编程小翁 原创,转载请注明. 本文同步发布在简书中,强烈建议移步简书查看,编程小翁 HTTP属于老话题了,在项目中我们经常需要往服务端发POST或者GET请求,但是对于HTTP的了解 ...

  8. 织梦Dedecms安全设置

    织梦DedeCMS是一款非常流行的CMS,很多刚开始建站人都用的织梦,一方面是织梦比较容易操作;另一方面是织梦的SEO方面做的确实比其他的系统要好一些.这些都导致织梦的用户群是非常庞大的,用的人多了, ...

  9. [转]Oracle 12c多租户特性详解:PDB 的创建、克隆与维护

    转自:http://chuansong.me/n/443660447865 PDB 的创建和访问 在使用 dbca 建库时,创建数据库之前,可以保存一下创建脚本,分析其具体执行过程.以自定义方式创建名 ...

  10. vi(vim)键盘图及其基本命令

    进入vi vi filename                打开或新建文件,并将光标置于第一行首 vi +n filename           打开文件,并将光标置于第 n行首 vi + fi ...