博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring boot2 整合(一续)Druid数据库连接池和FastJson
阅读量:5911 次
发布时间:2019-06-19

本文共 7215 字,大约阅读时间需要 24 分钟。

本项目教程环境建立在

的基础上。

1. Druid配置

1.1 修改pom.xml
com.alibaba
druid
1.0.11
1.2. 添加yml配置属性
# 使用druid数据源    type: com.alibaba.druid.pool.DruidDataSource    driver-class-name: com.mysql.jdbc.Driver    platform: mysql    # 下面为连接池的补充设置,应用到上面所有数据源中    # 初始化大小,最小,最大    initialSize: 1    minIdle: 3    maxActive: 20    # 配置获取连接等待超时的时间    maxWait: 60000    # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒    timeBetweenEvictionRunsMillis: 60000    # 配置一个连接在池中最小生存的时间,单位是毫秒    minEvictableIdleTimeMillis: 30000    validationQuery: select 'x'    testWhileIdle: true    testOnBorrow: false    testOnReturn: false    # 打开PSCache,并且指定每个连接上PSCache的大小    poolPreparedStatements: true    maxPoolPreparedStatementPerConnectionSize: 20    # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙    filters: stat,wall,slf4j    # 通过connectProperties属性来打开mergeSql功能;慢SQL记录    connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000    # 合并多个DruidDataSource的监控数据    #useGlobalDataSourceStat: true

注意这些属性都是spring.datasource下的子属性。

1.3. 添加druid的配置类文件

DruidConfiguration .java

package com.fantj.config;/** * druid 连接池配置类 * Created by Fant.J. */@Configurationpublic class DruidConfiguration {    @Value("${spring.datasource.url}")    private String dbUrl;    @Value("${spring.datasource.username}")    private String username;    @Value("${spring.datasource.password}")    private String password;    @Value("${spring.datasource.driver-class-name}")    private String driverClassName;    @Value("${spring.datasource.initialSize}")    private int initialSize;    @Value("${spring.datasource.minIdle}")    private int minIdle;    @Value("${spring.datasource.maxActive}")    private int maxActive;    @Value("${spring.datasource.maxWait}")    private int maxWait;    @Value("${spring.datasource.timeBetweenEvictionRunsMillis}")    private int timeBetweenEvictionRunsMillis;    @Value("${spring.datasource.minEvictableIdleTimeMillis}")    private int minEvictableIdleTimeMillis;    @Value("${spring.datasource.validationQuery}")    private String validationQuery;    @Value("${spring.datasource.testWhileIdle}")    private boolean testWhileIdle;    @Value("${spring.datasource.testOnBorrow}")    private boolean testOnBorrow;    @Value("${spring.datasource.testOnReturn}")    private boolean testOnReturn;    @Value("${spring.datasource.poolPreparedStatements}")    private boolean poolPreparedStatements;    @Value("${spring.datasource.maxPoolPreparedStatementPerConnectionSize}")    private int maxPoolPreparedStatementPerConnectionSize;    @Value("${spring.datasource.filters}")    private String filters;    @Value("{spring.datasource.connectionProperties}")    private String connectionProperties;    @Bean   //声明其为Bean实例    @Primary //在同样的DataSource中,首先使用被标注的DataSource    public DataSource dataSource(){        DruidDataSource datasource = new DruidDataSource();        datasource.setUrl(this.dbUrl);        datasource.setUsername(username);        datasource.setPassword(password);        datasource.setDriverClassName(driverClassName);        //configuration        datasource.setInitialSize(initialSize);        datasource.setMinIdle(minIdle);        datasource.setMaxActive(maxActive);        datasource.setMaxWait(maxWait);        datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);        datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);        datasource.setValidationQuery(validationQuery);        datasource.setTestWhileIdle(testWhileIdle);        datasource.setTestOnBorrow(testOnBorrow);        datasource.setTestOnReturn(testOnReturn);        datasource.setPoolPreparedStatements(poolPreparedStatements);        datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);        try {            datasource.setFilters(filters);        } catch (SQLException e) {            System.err.println("druid configuration initialization filter: "+ e);        }        datasource.setConnectionProperties(connectionProperties);        return datasource;    }    @Bean    public ServletRegistrationBean statViewServlet(){        //创建servlet注册实体        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");        //设置ip白名单        servletRegistrationBean.addInitParameter("allow","127.0.0.1");        //设置ip黑名单        servletRegistrationBean.addInitParameter("deny","192.168.0.2");        //设置控制台管理用户        servletRegistrationBean.addInitParameter("loginUsername","druid");        servletRegistrationBean.addInitParameter("loginPassword","123456");        //是否可以重置数据        servletRegistrationBean.addInitParameter("resetEnable","false");        return servletRegistrationBean;    }    @Bean    public FilterRegistrationBean statFilter(){        //创建过滤器        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());        //设置过滤器过滤路径        filterRegistrationBean.addUrlPatterns("/*");        //忽略过滤的形式        filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.png,*.css,*.ico,/druid/*");        return filterRegistrationBean;    }}

注意该代码段中有

//设置控制台管理用户        servletRegistrationBean.addInitParameter("loginUsername","druid");        servletRegistrationBean.addInitParameter("loginPassword","123456");

这是druid监控端的账号和密码,其登录入口的官方url为:

img_64c3c8fc66fad32976515b3fd5fa1a73.png

2. FastJson配置

2.1 添加pom依赖
com.alibaba
fastjson
1.2.39
2.2 增加fastJson配置文件

方法一:继承extends WebMvcConfigurerAdapter

FastJsonConfiguration .java

package com.fantj.config;/** * fastJson 配置类 * Created by Fant.J. */@Configurationpublic class FastJsonConfiguration extends WebMvcConfigurerAdapter{    /**     * 修改自定义消息转换器     */    @Override    public void configureMessageConverters(List
> converters){ super.configureMessageConverters(converters); //1.创建一个convert消息转换对象 FastJsonHttpMessageConverter fastConvert = new FastJsonHttpMessageConverter(); //2.创建一个fastJson的配置对象,然后配置格式化信息 FastJsonConfig config = new FastJsonConfig(); config.setSerializerFeatures(SerializerFeature.PrettyFormat); //3.在convert中添加配置信息 fastConvert.setFastJsonConfig(config); //4.将convert添加到converts里面 converters.add(fastConvert); }}

方法二:覆盖方法configureMessageConverters

public HttpMessageConverters fastJsonHttpMessageConverters(){//1.创建一个convert消息转换对象FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();//2.创建一个fastJson的配置对象,然后配置格式化信息FastJsonConfig fastJsonConfig = new FastJsonConfig();fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);//3.在convert中添加配置信息fastConverter.setFastJsonConfig(fastJsonConfig);HttpMessageConverter
converters = fastConverter;return new HttpMessageConverters(converters);}
2.3 修改pojo
@Datapublic class User {    private Integer id;    private String username;    @JSONField(format="yyyy-MM-dd HH:mm:ss")    private Date birthday;    private String sex;    private String address;}

注意@JSONField(format="yyyy-MM-dd HH:mm:ss"),如果它能显示出效果,证明druid配置成功。

img_0f3df6d2827ed6513abe5ac8fa7e7171.png

转载地址:http://qmmpx.baihongyu.com/

你可能感兴趣的文章
[UWP]了解模板化控件(6):使用附加属性
查看>>
我的友情链接
查看>>
PowerShell Switch判断语句示例
查看>>
《Spring实战》第四版读书笔记 第一章 Spring之旅
查看>>
那些年,一起学的Java 3-3
查看>>
那些年,一起学的Java 2-4
查看>>
Java中的多态和C#中的多态的区别
查看>>
UIView之【UIViewContentMode】
查看>>
yum 及手动编译rpm包
查看>>
使用Maven运行 MyBatis Generator
查看>>
7-设计模式-代理模式
查看>>
RedHat已更改其开源许可规则
查看>>
Android零基础入门第29节:善用TableLayout表格布局,事半功倍
查看>>
element-ui 的 table后端排序
查看>>
redis集群搭建
查看>>
linux重定向
查看>>
红包生成的模拟器2018今日头条秋招
查看>>
管道符和作业控制,shell变量和环境变量配置文件
查看>>
DirectX3D设备丢失(lost device)的处理(一)
查看>>
来自田野的回音——《背过身去的大娘娘》的读后感范文2600字
查看>>