学记: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官网。
学记:spring boot使用官网推荐以外的其他数据源druid的更多相关文章
- spring原理案例-基本项目搭建 01 spring framework 下载 官网下载spring jar包
下载spring http://spring.io/ 最重要是在特征下面的这段话,需要注意: All avaible features and modules are described in the ...
- Kudu安装(官网推荐的步骤)(installing build Kudu from source)
不多说,直接上干货! Kudu安装前的建议说明(博主推荐) 这是安装Kudu的另一种方法 Kudu安装(官网推荐的步骤)(installing Kudu using parcels or packag ...
- Kudu安装(官网推荐的步骤)(installing Kudu using parcels or packages)
不多说,直接上干货! Kudu安装前的建议说明(博主推荐) Kudu官网推荐的步骤: 本篇博文是installing Kudu using parcels or packages的方式. http:/ ...
- 【spring boot】12.spring boot对多种不同类型数据库,多数据源配置使用
2天时间,终于把spring boot下配置连接多种不同类型数据库,配置多数据源实现! ======================================================== ...
- Spring众多jar包的特点,及Spring jar包官网下载方法
下面给大家说说spring众多jar包的特点吧,无论对于初学spring的新手,还是spring高手,这篇文章都会给大家带来知识上的收获,如果你已经十分熟悉本文内容就当做一次温故知新吧.spring. ...
- 下雨天,适合学「Spring Boot」
北方的闷热,让不少小伙伴盼着下雨,前几天北京下了场大雨,杭州也紧跟这下了场雨,就在昨天原本还很闷热的天,突然就飘泼大雨了.今天也断断续续的下着小雨,一觉醒来已经是10点了.有句话说:懒惰是人的天性 ...
- Spring Boot系列:七、 实现Mybatis多数据源切换
一.引入相关maven配置 mybatis; mysql驱动:jdbc <dependency> <groupId>org.mybatis.spring.boot</g ...
- 学习Spring Boot:(二十四)多数据源配置与使用
前言 随着业务量增大,可能有些业务不是放在同一个数据库中,所以系统有需求使用多个数据库完成业务需求,我们需要配置多个数据源,从而进行操作不同数据库中数据. 正文 JdbcTemplate 多数据源 配 ...
- Spring Boot教程(三十二)多数据源配置与使用
之前在介绍使用JdbcTemplate和Spring-data-jpa时,都使用了单数据源.在单数据源的情况下,Spring Boot的配置非常简单,只需要在application.propertie ...
随机推荐
- Linux Cmd Tool 系列之—alias
The alias cmd list your current aliases. For example : alias Use alias to shorten a long cmd in curr ...
- JS 传播事件、取消事件默认行为、阻止事件传播
1.事件处理程序的返回值 通常情况下,返回值false就是告诉浏览器不要执行这个事件相关的默认操作.例如,表单提交按钮的onclick事件处理程序能通过返回false阻止浏览器提交表单,再如a标签的o ...
- spring四种依赖注入方式
一.Set注入 这是最简单的注入方式,假设有一个SpringAction,类中需要实例化一个SpringDao对象,那么就可以定义一个private的SpringDao成员变量,然后创建SpringD ...
- java List的排序
List自定义排序 1.第一种方法,就是list中对象实现Comparable接口,重写compareTo接口, 对排序的字段进行比较.2.第二种方法,就是在重载Collections.sort方法. ...
- jasmine test 页面测试工具
before((request, response) -> { response.header("Access-Control-Allow-Origin", "ht ...
- AndroidProjects个人项目归纳
AndroidProjects 个人总结归纳-目录大纲 Data Binding框架MVVM BaseView CollapseView 更新中... 项目地址:https://github.com/ ...
- IO流的登录与注册
import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileR ...
- [Erlang 0110] Erlang Abstract Format , Part 1
Erlang Abstract Format并不难懂,只是枯燥一点罢了,如果把Abstract Format的文档翻译出来,其实就是Erlang教科书中语法入门的部分. Erlang Abstract ...
- C# 中Switch case 返回不止用break
Switch(temp) { case "A": //跳出循环 break; case "B": //返回值 return var; case "C& ...
- inotify+rsync实现实时同步部署
1.1.架构规划 1.1.1架构规划准备 服务器系统 角色 IP Centos6.7 x86_64 NFS服务器端(NFS-server-inotify-tools) 192.168.1.14 Cen ...