template. template template翻译

Jdbc TemplateAutoConfiguration在实践过程中 , 除了数据源的配置外 , 我们还会经常用到 Jdbc Template 。Jdbc Template是 Spring 对数据库的操作在 jdbc 的封装 。本节我们简单看一下 Jdbc Template 实例化操作 , 不做过多拓展 。
JdbcTemplate 的自动配置是通过 Jdbc TemplateAutoConfiguration 来完成的 , 与上面讲到的 DataSourceAutoConfiguration 的自动配置 在 spring.factories 中注册位置一样 。源代码如下 。
@Configuration(proxyBeanMethods = false)@ConditionalOnClass({ DataSource. class, JdbcTemplate.class })@ConditionalOnSingleCandidate(DataSource.class)@AutoConfigureAfter (DataSourceAutoConfiguration. class)@EnableConfigurationProperties (JdbcProperties.class)@Import({ JdbcTemplateConfiguration. class, NamedParameterJdbcTemplateConfiguration.class })public class JdbcTemplateAutoConfiguration {}}JdbcTemplateAutoConfiguration 的具体实现为空 , 注解部分通过@ConditionalOn-Class指 定 必 须 存 在 DataSource 和 JdbcTemplate 类 才 会 进 行 实 例 化 ;
@ConditionalOnSingle-Candidate 指定只存在 -一个候选 DataSource 的 Bean 时才会实例化:@AutoConfigureAfter 指定在初始化 DataSourceAutoConfiguration 之后才会进行实例化;
@EnableConfigurationProperties 指定了配置类;
@lmport导入了JdbcTemplateConfiguration和NamedParameterJdbcTemplateConfigurati-on 两 个 配 置 类  ,  其 中 JdbcTemplateConfiguration 便是用来实例化 Jdbc Template 的 。
@Configuration(proxyBeanMethods = false)@ConditionalOnMi ssingBean( JdbcOperations. class)class JdbcTemplateConfiguration {@Bean@PrimaryJdbc Template jdbcTemplate(DataSource dataSource, JdbcProperties propertie//根据数据源创建 Jdbc TemplateJdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);JdbcProperties . Template template = properties . getTemplate();//设置配置文件中的配置项到 dbc TemplatejdbcTemplate . setFetchSize(template . getFetchSize());jdbcTemplate . setMaxRows (template . getMaxRows());if (template . getQueryTimeout() != null) {jdbcTemplate. setQueryTimeout((int) template. getQueryTimeout(). getSeconds());return jdbcTemplate;}}JdbcTemplate 的实例化操作很简单 , 根据数据源创建-一个 JdbcTemplate 对象 , 并设置JdbcProperties 中对应的配置 , 分别设置了获取数据大小、最大行数、查询超时时间等内容 。
JdbcTemplate 内部提供了我们操作数据库常见方法 , 比如 query、queryForObject、update、execute 等 ,  在此就不展开了 。
Jdbc TemplateAutoConfiguration 导入的 NamedParameterJdbcTemplateConfiguration 主要用来初始化 NamedParameterJdbcTemplate 。NamedParameterJdbcTemplate 相当于Jdbc- Template 的包装类 , 提供了基于占位符的 SQL 的功能 。
@Configuration(proxyBeanMethods = false)Q@ConditionalOnsingleCandidate(JdbcTemplate . class)@ConditionalOnMiss ingBean(NamedParameterJdbcOperations .class)class NamedParameterIdbcTemplateConfiguration {@Bean@PrimaryNamedParameterJdbcTemplate namedParameterJdbcTemplate(JdbcTemplate jdbcTemplate)return new NamedParameterIdbcTemplate(jdbcTemplate);}}NamedParameterJdbcTemplate 的实例化操作非常简单 , 满足自动配置条件时 , 以JdbcTemplate 为 参数 new-个 NamedParameterJdbc Template 即可 。
无论是 JdbcTemplate 还是 NamedParameterJdbcTemplate 的实例化 , 注解部分都添加了@Primary,用来表示当存在多个同类型的对象时 , 当前对象会被优先注入 。关于 JdbcTemplate 的 JdbcTemplateAutoConfiguration 配置类我们就讲这么多 。

template. template template翻译

文章插图

异常案例分析Spring Boot 中大多数自动配置引入之后不需要用户操作什么便可自动生效 , 但是数据源的配置算是一个例外 。如果只是引入了 spring-boot-starter-jdbc 这个 starter,启动的时候是会抛出异常的 。
这是为什么呢?这是因为如果引入了该 starter,等于变相引入了 spring-jdbc,而数据源自动化配置类 DataSourceAutoConfiguration 生效的限定条件为 classpath 中司时存在javax.sql.DataSource和org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType 两个条件都满足 , 数据源自动配置生效 , 开始初始化相关信息 。而此时 , 在 application.properties 中如果没有配置连接数据库的相关配置 , 便会抛出异针对此异常 , 如果暂时不考虑使用数据库连接 , 可去掉 spring-boot-starter-jdbc 的依赖 , 或明确声明排除 DataSourceAutoConfiguration 的自动配可通过注解或配置文件两种形式中的一-种来达到目的 。在启动类上添加注解排除方式 。
@EnableAutoConfigurat ion(exclude = DataSourceAutoConfiguration. class)通过配置文件排除方式 。