共计 4034 个字符,预计需要花费 11 分钟才能阅读完成。
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 注解标注在类上,示意该类导入的内部资源。