相关代码示例:
使用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