SpringBoot学习之SpringBoot整合MySQL和Druid

建立项目

在建立项目的时候需要选择以下依赖。
SpringBoot学习之SpringBoot整合MySQL和Druid_第1张图片
SpringBoot学习之SpringBoot整合MySQL和Druid_第2张图片

可能出现的问题

默认选择的驱动包是基于MySQL8的,如果安装的不是MySQL8需要自己指定驱动版本。

application.properties

在application.properties文件中添加连接MySQL需要的配置。

##mysql配置
##url
spring.datasource.url=jdbc:mysql://localhost:3306/db_test?useUnicode=true&characterEncoding=UTF-8
##用户名
spring.datasource.username=root
##密码
spring.datasource.password=root
##驱动
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

运行测试

在自动生成的测试类中进行测试,需要添加以下代码。


 @Autowired
    private JdbcTemplate jdbcTemplate;

 @Test
    public void testMySql() {
        String sql = "select * from user";
        List<User> userList = jdbcTemplate.query(sql, new RowMapper<User>() {
            @Override
            public User mapRow(ResultSet resultSet, int i) throws SQLException {
                User user = new User();
                user.setUid(resultSet.getInt("uid"));
                user.setUsername(resultSet.getString("username"));
                user.setPassword(resultSet.getString("password"));
                return user;
            }
        });

        System.out.println("查询结果:");
        for(User user : userList) {
            System.out.println("user:" + user);
        }
    }

运行结果如下:
SpringBoot学习之SpringBoot整合MySQL和Druid_第3张图片

整合Druid并开启监控功能

在刚开始建立项目的时候,我们选择了SpringWeb依赖,但是在整合MySQL并进行测试的时候并没有用到,在使用Druid监控功能的时候需要用到这个,如果没有添加这个依赖的话,在最后启动项目时会发现项目启动后会自动关闭,出现extShutdownHook错误在pom文件中需要添加Servlet依赖,因为这里开启监控功能使用的是用代码注册Servlet和Filter。

添加druid配置

在application.properties文件中增加以下配置。

##druid配置
###  数据源类别
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
### 初始化大小,最小,最大
spring.datasource.initialSize=5
spring.datasource.minIdle=5
spring.datasource.maxActive=20
### 配置获取连接等待超时的时间,单位是毫秒
spring.datasource.maxWait=60000
### 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
spring.datasource.timeBetweenEvictionRunsMillis=60000
### 配置一个连接在池中最小生存的时间,单位是毫秒
spring.datasource.minEvictableIdleTimeMillis=300000
spring.datasource.validationQuery=SELECT 1 FROM DUAL
spring.datasource.testWhileIdle=true
spring.datasource.testOnBorrow=false
spring.datasource.testOnReturn=false
### 打开PSCache,并且指定每个连接上PSCache的大小
spring.datasource.poolPreparedStatements=true
spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
### 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
spring.datasource.filters=stat,wall,log4j
### 通过connectProperties属性来打开mergeSql功能;慢SQL记录
spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
### 合并多个DruidDataSource的监控数据
#spring.datasource.useGlobalDataSourceStat=true

建立Druid配置类

建立Druid配置类DruidConfiguration。

@Configuration
public class DruidConfiguration {

    @Bean
    public ServletRegistrationBean druidStatViewServlet() {
        //ServletRegistrationBean提供的类进行注册
        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
        //添加初始化参数
        servletRegistrationBean.addInitParameter("allow","127.0.0.1");
        //ip黑名单
        servletRegistrationBean.addInitParameter("deny","192.168.1173");
        //登陆查看账号和密码信息
        servletRegistrationBean.addInitParameter("loginUsername","admin");
        servletRegistrationBean.addInitParameter("loginPassword","123456");
        //是否能够重置数据
        servletRegistrationBean.addInitParameter("resetEnable","false");

        return servletRegistrationBean;
    }

    @Bean
    public FilterRegistrationBean druidStaFilter() {

        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
        //添加过滤规则
        filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");

        return filterRegistrationBean;
    }

}

启动项目

访问http://localhost:8080/druid/index.html,输入用户名和密码以后就可以看到下面的结果。
SpringBoot学习之SpringBoot整合MySQL和Druid_第4张图片

参考

  • 一步一步学SpringBoot:微服务项目实战

你可能感兴趣的:(JavaEE,java,spring,boot)