spring全家桶使用学习-jdbc自动装配

相关代码示例: 

使用springboot 自动配置jdbc单数据源 : https://github.com/mengyan183/spring-family/tree/main/spring-datasource

使用spring-framework 手动实现 jdbc 单数据源管理: https://github.com/mengyan183/spring-family/tree/main/spring-datasource-without-autoconfig 

 

对于spring-boot-jdbc-starter 完成spring-jdbc 自动装配相关

自动装配主要包含

  • DataSourceAutoConfiguration 配置 DataSource
  • DataSourceTransactionManagerAutoConfiguration 自动配置 DataSourceTransactionManager
  • JdbcTemplateAutoConfiguration 自动配置 JdbcTemplate

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>

<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!--引入jdbc连接--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--引入 h2 数据库连接驱动--> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>

 

可以通过 actuator 查看自动装配的相关beans

https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-features.html#production-ready

对于actuator 支持 web/jmx 两种请求方式,对于web模式中两个默认开启的 断点(endpoint), info/health 

对此需要注意的一点为:

management.endpoints.enabled-by-default=true|false 来控制默认(开启)断点的状态 , 对于 web模式下,实际就是只能控制 info/health 两个断点

management.endpoint.<id>.enabled=true|false 来控制指定断点的状态;对于 <id>实际就是代表actuator所支持的所有断点; 但对于当前配置需要特别注意的一点为当前操作只针对默认开启状态的断点有效;对于web模式下实际就只能操作info/health两个节点

因此对于以上特点,spring-framework提供了 include/exclude 配置来批量操作

management.endpoints.{类型(web/jmx)}.exposure.include 包含

management.endpoints.{类型(web/jmx)}.exposure.exclude 排除

 

由于默认情况下 management.endpoints.web.exposure.include = info,health 只开放了两个节点, 需要访问beans 时, 可以写成 management.endpoints.web.exposure.include=info,health,beans 或者 management.endpoints.web.exposure.include=*

 

访问 web请求根路径/actuator/beans 可以看到所有接受spring 容器管理的bean  

上一篇:Day 4 文件管理 file management


下一篇:docker下springboot的多环境配置