SpringBoot 数据访问、启动配置原理以及自定义Starter

本文深入探讨SpringBoot的数据访问技术,包括JDBC、Druid数据源、MyBatis集成以及Spring Data JPA的使用。详细解析启动配置原理,并介绍如何自定义Starter,包括创建自动配置模块和启动器模块的步骤,帮助读者理解SpringBoot应用的构建和扩展机制。
摘要由CSDN通过智能技术生成


JDBC

我们可以通过使用 Spring Initializr 选择所需要的模块进行项目的创建:
在这里插入图片描述

  1. 依赖(通过上面创建的应用会自动配置依赖)
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</artifactId>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>
  1. yaml配置
		spring:
		  datasource:
		    username: root
		    password: 123456
		    url: jdbc:mysql://127.0.0.1:3306/jdbc
		    driver-class-name: com.mysql.jdbc.Driver

原理:

  • 默认是用 org.apache.tomcat.jdbc.pool.DataSource 作为数据源;
  • 数据源的相关配置都在 DataSourceProperties 里面;

自动配置都在 org.springframework.boot.autoconfigure.jdbc 下:

  • DataSourceConfiguration,根据配置创建数据源,默认使用Tomcat连接池;可以通过 spring.datasource.type 指定自定义的数据源类型,可用的数据源类型:

org.apache.tomcat.jdbc.pool.DataSource、HikariDataSource、BasicDataSource

也可以使用自定义的数据源,在 DataSourceConfiguration 下:

		/**
		 * Generic DataSource configuration.
		 */
		@ConditionalOnMissingBean(DataSource.class)
		@ConditionalOnProperty(name = "spring.datasource.type")
		static class Generic {
   
		
		   @Bean
		   public DataSource dataSource(DataSourceProperties properties) {
   
		       //使用DataSourceBuilder创建数据源,利用反射创建响应type的数据源,并且绑定相关属性
		      return properties.initializeDataSourceBuilder().build();
		   }
		
		}
  • DataSourceInitializer 实现了 ApplicationListener,通过 runSchemaScripts() 运行建表语句;runDataScripts() 运行插入数据的sql语句,即可以对数据源中的数据进行初始化。
    所以我们可以通过如下规则进行配置:

schema-.sql、data-.sql
默认规则:schema.sql,schema-all.sql;

指定位置可以使用:

		schema:
			- classpath:initializ.sql
  • JdbcTemplateAutoConfiguration,这个自动配置就是为我们操作数据库提供的 JdbcTemaplate 进行自动配置,所以我们可以直接注入:
		@Autowire
		JdbcTemplate jdbcTemplate;
使用 Druid 数据源
  1. 依赖
		<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
		<dependency>
		    <groupId>com.alibaba</groupId>
		    <artifactId>druid</artifactId>
		    <version>1.1.20</version>
		</dependency>
  1. 指定数据源类型
		spring:
		  datasource:
		    username: root
		    password: 123456
		    url: jdbc:mysql://127.0.0.1:3306/jdbc
		    driver-class-name: com.mysql.jdbc.Driver
		    type: com.alibaba.druid.pool.DruidDataSource
  1. 除了上面的基本配置,对于其他连接池的配置,在 SpringBoot 自动配置的 properties 中并没有,所以需要我们自己写:
		@Configuration
		public class DruidConfig {
   
			//将我们配置文件中的属性(maxAcive、initialSize...)绑定到 DruidDataSource
		    @ConfigurationProperties(prefix = "spring.datasource")
		    @Bean
		    public DataSource druid(){
   
		       return  new DruidDataSource();
		    }
		}
  1. 还可以在我们的 DruidConfig 中配置监控:
		 	//配置Druid的监控
		    //1、配置一个管理后台的Servlet
		    @Bean
		    public ServletRegistrationBean statViewServlet(){
   
		        ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
		        Map<String,String> initParams = new HashMap<>();
		
		        initParams.put("loginUsername","admin");
		        initParams.put("loginPassword","123456");
		        initParams.put("allow","");//默认就是允许所有访问
		        initParams.put("deny","192.168.15.21");
		
		        bean.setInitParameters(initParams);
		        return bean;
		    }
		    
			//2、配置一个web监控的filter
		    @Bean
		    public FilterRegistrationBean webStatFilter(){
   
		        FilterRegistrationBean bean = new FilterRegistrationBean()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值