spring boot 数据库访问

一、基本使用

导入jdbc启动器:

        
            org.springframework.boot
            spring-boot-starter-jdbc
        

可以看下,导入后自动导入了那些包:

spring boot 数据库访问_第1张图片

可以看到,没有导入驱动,主要是因为不清楚接下来需要操作说明数据库,所有没有导入。

        
            mysql
            mysql-connector-java
        

spring boot会自动导入 版本为8的驱动,使用者需要根据自己的实际情况对版本进行维护。

修改版本的2种方式:

  • 直接引入版本,使用maven的就近原则
  • 重新声明,使用maven的属性就近原则 

二、自动配置原理

  • DataSourceAutoConfiguration 数据源的自动配置
    • 修改数据源相关配置,配置文件中修改 spring.datasource 开头的即可
    • 数据库连接池,当没有配置的时候会自动配置spring boot 数据库访问_第2张图片
    • 底层配置好的数据源是 HikariDataSource 连接池spring boot 数据库访问_第3张图片
  • DataSourceTransactionManagerAutoConfiguration 事务自动配置
  • JdbcTemplateAutoConfiguration 数据库操作配置
  • JndiDataSourceAutoConfiguration JNDI自动配置
  • XADataSourceAutoConfiguration  分布式事务相关配置 

三、使用Druid数据源

在spring boot中使用第三方功能的时候,无非以下两种方式

  • 自定义方式,引入jar包和相关配置(在spring boot中可以使用配置类)
  • 寻找改功能的spring boot 启动器(starter) jar包

引入druid的依赖:

 
            com.alibaba
            druid
            1.1.17
        

配置数据源和监控,在数据源中set的相关属性,在配置文件中一样可以处理:

package com.example.demo.conf;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;
import java.util.Arrays;

@Configuration
public class MyDataSourceConfig {

    /**
     * 默认数据源自动配置,是判断容器中没有数据源才用默认的
     * @return
     */
    @ConfigurationProperties("spring.datasource")//跟spring.datasource 中的属性绑定
    @Bean
    public DataSource dataSource() throws Exception{
        //很多属性
        DruidDataSource druidDataSource = new DruidDataSource();
        //加入监控功能,防火墙
        druidDataSource.setFilters("stat,wall");
        return druidDataSource;
    }

    /**
     * 增加Druid监控servlet
     * @return
     */
    @Bean
    public ServletRegistrationBean statViewServlet(){
        StatViewServlet statViewServlet = new StatViewServlet();
        ServletRegistrationBean statViewServletServletRegistrationBean = new ServletRegistrationBean<>(statViewServlet, "/druid/*");
        statViewServletServletRegistrationBean.addInitParameter("loginUsername", "admin");
        statViewServletServletRegistrationBean.addInitParameter("loginPassword", "admin");
        return statViewServletServletRegistrationBean;
    }

    @Bean
    public FilterRegistrationBean webStatFilter(){
        WebStatFilter webStatFilter = new WebStatFilter();
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(webStatFilter);
        filterRegistrationBean.setUrlPatterns(Arrays.asList("/*"));
        filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,*.jsp,/druid/*,/download/*");
        return filterRegistrationBean;
    }

}

访问项目的druid监控主页:

spring boot 数据库访问_第4张图片

四、使用druid启动器 - starter

        
            com.alibaba
            druid-spring-boot-starter
            1.1.17
        

自动配置:

spring boot 数据库访问_第5张图片

自动配置类中导入了如下相关类:

  • DruidSpringAopConfiguration.class:监控spring 组件的
  • DruidStatViewServletConfiguration.class:开启监控页
  • DruidWebStatFilterConfiguration.class:配置了web url 监控
  • DruidFilterConfiguration.class:容器中放入相关的组件

配置文件:

spring boot 数据库访问_第6张图片 引入启动器之后,就可以使用配置文件进行配置,可以查看官方文件进行配置

spring boot 数据库访问_第7张图片

 

你可能感兴趣的:(spring,boot,spring,boot,数据库,spring,1024程序员节)