1.Spring JDBC 简介
那么什么是 Spring JDBC 呢?Spring JDBC 是 Spring 框架的根底模块之一,是 Spring 框架提供的一组 API,用于简化对 JDBC 的编程,只须要申明 SQL 语句、调用适合的 Spring JDBC框架 API、处理结果集即可,其余java培训的事件都交给 Spring JDBC 去实现。下图展现了 Spring JDBC在 Spring 框架中位置。

Spring JDBC 通常是在三层架构下和 MVC 模式下应用,那么它在三层架构和 MVC 模式中又是处于什么位置呢?来看上面的这幅图,它形容了 Spring JDBC 在三层架构下和 MVC 模式中的位置。

Spring JDBC 提供了三种形式来简化 JDBC 编程,别离是 JDBC 模板形式、关系数据库对象 化形式、SimpleJdbc 形式。本章解说 JDBC 模板形式。模板形式的外围 JdbcTemplate 类,它 替咱们实现了资源的创立以及开释,从而简化了咱们对 JDBC 的应用。它还能够帮忙咱们避 免一些常见的谬误,例如遗记敞开数据库连贯。JdbcTemplate 将实现 JDBC 外围解决流程, 比方 Connection 对象的创立、PreparedStatement 对象的创立、SQL 语句的执行、事务的开 始和提交、开释资源、调用存储过程等。而把 SQL 语句拼写以及查问后果的提取工作留给我 们的利用代码。
2.Spring JDBC 模块

• core

即外围包,它蕴含了 JDBC 的外围性能。此包内有很多重要的类,包含:JdbcTemplate, SimpleJdbcInsert 类,SimpleJdbcCall 类以及 NamedParameterJdbcTemplate 类。
• datasource

即数据源包,该包中蕴含了拜访数据源的实用工具类,它有多种数据源的实现。
• object

即对象包,以面向对象的形式拜访数据库。它容许执行查问并返回业务对象。它能够在 数据表的列和业务对象的属性之间映射查问后果。
• support

即反对包,是 core 和 object 包的反对类,例如提供了异样转换性能的 SQLException 类。
3.JdbcTemplate 类
JdbcTemplate 类是 Spring JDBC 的外围类,该类提供了一组操作 SQL 语句的 API。应用该 类时须要为其设置数据源,数据源中须要设置驱动程序、连贯字符串、用户名、明码、数据 库名称等重要的信息,如下图所示。

4.Spring 优化配置
• annotation-config

在spring中,bean的依赖注入有两种形式,第一种应用xml配置,第二种应用annotation配置。在后面的课程中曾经学习了xml配置形式,本章解说annotation配置形式。Spring开发团队倡议应用annotation配置形式
应用annotation形式实现须要2步。
1:启用annotation配置
在spring配置文件中,启用annotation配置
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" ……>

<!-- 启用annotation配置 --> <context:annotation-config/>……

</beans>该配置隐式注册了对annotation进行解析解决的处理器类。
2:在类的属性上标注@Resource
public class DeptService {

@Resource(name="deptDao") private DeptDao deptDao =null; //省略局部代码

}DeptService类的属性deptDao上标注了@Resource(name=“deptDao”),示意通知Spring容器,将Spring容器中bean名称为deptDao的bean对象注入给DeptService类的属性deptDao。
@Resource(name=“deptDao”)private DeptDao deptDao =null;
相当于
<property name="deptDao" ref="deptDao"></property>因而,应用了annotation配置后,就无需xml配置了。
@Resource注解是位于javax.annotation包中,是web容器提供的注解。
Spring容器也提供了属性注入注解,包含@Autowired、@Qualifier。
• @Resource

@Resource注解能够标注在属性和办法上。默认依照对象名称注入属性值,如果依照名称找不到依赖的对象,则依照类型寻找依赖的对象。对象名称能够通过@Resource注解的name属性指定,如果没有指定name属性,当@Resource标注在属性上时,通过属性名称作为bean名称寻找依赖对象,当@Resource标注在属性的set办法上时,取属性名称作为bean名称寻找依赖对象。如果没有指定name属性,并且默认依照名称依然找不到依赖对象时,@Resource注解会退回到依照类型匹配。一旦指定了name属性,就只能依照名称注入了。
• @Autowired

@Autowired注解依照类型注入,默认状况下它要求依赖的对象必须存在,如果容许为null,能够设置它的required属性为false。
• @Qualifier

@Autowired是依照类型注入的,如果@Autowired想应用对象名称注入,能够联合@Qualifier注解一起应用,由@Qualifier注解确定注入的对象名称。
• component-scan

context:annotation-config/可能实现为属性注入值,从而简化了xml的配置,但bean对象的创立仍然要定义在xml文件中。Spring引入了组件主动扫描机制,他能够在指定的包下寻找标注了@Component、@Service,@Controller,@Respository注解的类,而后主动创立该类的对象,并将对象交给spring容器治理。这些注解的作用和xml中的bean节点配置是一样的,从而进一步简化了xml的配置。应用component-scan须要两步
1:启用component-scan配置
在spring配置文件中,启用component-scan配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" ……>
<!-- 启用组件扫描 -->
<context:component-scan base-package="cn.it"/>

……

</beans>该配置隐式注册了对注解进行解析解决的处理器类。base-package属性指定须要扫描的包及其子包。
2:在类的名上标注annotation
在类名上可标注的annotation有@Component、@Service,@Controller,@Respository。@Service用于配置在业务类上,@Controller用于配置在控制器上,@Respository用于配置在数组拜访组件上,@Component用于配置在以上三种组件之外的组件上。这些注解并没有严格辨别必须用在哪个组件上,事实上也能够将@Controller注解用在业务类上,之所以这样区别只是为了便于辨认是业务类还是控制器而已。
• @Service(“deptService”)标注在DeptService类上,示意通知Spring容器负责创立DeptService类的对象,并将创立的对象名称设置为deptService。
• @Scope

通过@scope注解可设置bean的作用域
@Service("deptService")
@Scope("prototype")
public class DeptService {

@Resource(name="deptDao") private DeptDao deptDao =null;public List<DeptModel> findAll(){    return deptDao.findAll();}

}scope的值包含singleton、prototype、request、session
• @PostConstruct @PreDestroy

通过@PostConstruct可设置bean初始化时调用的办法,通过@PreDestroy可设置bean销毁时调用的办法
• Java-based

始终以来,spring大量的XML配置及简单的依赖治理饱受非议。为了实现免XML的开发体验,Spring增加了Java based开发模式。Java-based开发模式中应用注解@Configuration、@Bean、@ImportResource、@ComponentScan等。
• @Bean注解用于标注在办法上,示意一个办法实例化、配置、初始化一个新的被Spring容器治理的bean对象。@Bean注解相当于xml配置文件中的。@Bean通常和@Configuration注解一起应用。
• @Configuration注解用于标注在类上,标注了@Configuration注解的类将作为bean定义的起源。此外@Configuration类容许bean之间依赖,只需简略地调用该类中其余的@Bean办法。
置文件中的。@Bean通常和@Configuration注解一起应用。
• @Configuration注解用于标注在类上,标注了@Configuration注解的类将作为bean定义的起源。此外@Configuration类容许bean之间依赖,只需简略地调用该类中其余的@Bean办法。
• @ImportResource注解标注在类上,示意该类导入的内部资源。