ImageVerifierCode 换一换
格式:PPT , 页数:38 ,大小:477.50KB ,
资源ID:8710899      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-8710899.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(spring 教程_3 应用.ppt)为本站会员(kpmy5893)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

spring 教程_3 应用.ppt

1、第 三 章,Spring 应用,2,目标,撑握Spring JDBC辅助类 了解Spring DAO 撑握Spring与Hibernate的整合 撑握Spring声明式事务配置 了解Spring中定时调度的使用 撑握Spring的单元测试,3,Spring JDBC抽象框架提供了对JDBC操作的完整封装,包括: 指定数据库连接参数 打开数据库连接 声明SQL语句 预编译并执行SQL语句 遍历查询结果 处理每一次遍历操作 处理抛出的任何异常 处理事务 关闭数据库连接,Spring JDBC,4,Spring JDBC包的构成: org.springframework.jdbc.core 该包定义

2、JDBCTemplate及一些回调接口用于封装JDBC的常见操作。 org.springframework.jdbc.datasource用于提供数据源绑定。 org.springframework.jdbc.object它提供比core包更高层次的封装,它操作的数据是可以与数据库断开连接的。 org.springframework.jdbc.support提供了一些SQLException的转换类以及相关的工具类。,Spring JDBC,5,DataSource接口提供了对数据源的封装。,Spring JDBC Core,示例在Spring注册一个数据源实例,6,Spring JDBC C

3、ore,JDBCTemplate提供了对JDBC操作的封装 PreparedStatement(接口)用于建立PreparedStatement的回调接口 ResultSetExtractor(接口)用于将Result数据转换成Java的POJO的回调接口 RowCallbackHandler(接口)用于处理结果集的回调接口,例如删除记录集中的行或更新记录集中的行。 RowMapper(接口)用于将结果集中当前行映射到一个Java对象,7,Spring JDBC 示例,使用JDBCTemplate将查询结果转换成二维数组,List rows = (List)this.getJdbcTempla

4、te().query(new PreparedStatementCreator() public PreparedStatement createPreparedStatement(Connection conn) throws SQLException return conn.prepareStatement(“select * from stud“); , new ResultSetExtractor() public Object extractData(ResultSet rs) throws SQLException, DataAccessException /将结果集转换成二维数组

5、 List rows = new ArrayList(); java.sql.ResultSetMetaData rsm = rs.getMetaData(); while(rs.next() List recls = new ArrayList(); for(int i=1; i=rsm.getColumnCount(); i+)recls.add(rs.getObject(i); rows.add(recls); return rows; );,8,Spring JDBC 示例,快速获取第一行第一列数据,this.getJdbcTemplate().queryForInt(“select

6、count(*) from stud where sex = ?“, new ObjectF);,执行更新,新加或删除操作,this.getJdbcTemplate().update(“delete from stud where set = ?“, new ObjectF);,执行回调方法,this.getJdbcTemplate().execute(new ConnectionCallback() public Object doInConnection(Connection conn) throws SQLException, DataAccessException conn.prepa

7、reStatement(“delete from stud“).execute();return null; );,9,Spring JDBC Dao,JdbcDaoSuppor可用于建立自定义DAO的父类。,public class DaoBase extends JdbcDaoSupport ,10,Spring 与Hibernate,Spring提供的LocalSessionFactoryBean可用于注册Hibernate的SessionFactory。,属性 hibernateProperties用于指定Hibernate的配置参数 configLocation指定配置文件 mapp

8、ingResources指定映射文件,11,Spring 与Hibernate,HibernateTemplate用于提供对Hibernate操作的封装。,HibernateDaoSupport用于提供建立Hibernate DAO的父类。,12,Spring 与Hibernate,Spring提供了OpenSessionFilter用于解决Hibernate的延迟初始化问题,示例在Web.xml中配置OpenSessionFilter, openSessionFilterorg.springframework.orm.hibernate3.support.OpenSessionInViewF

9、ilteropenSessionFilter /* ,13,Spring 声明式事务,声明式事务与编程式的事务本质区别在于前节通过配置来声明事务。 Spring同时支持声明式事务与编程式事务。 Spring事务抽象接口PlatformTransactionManager 它实现了统一的事务获取,提交,回滚的方法。 TransactionStatus getTransaction(TransactionDefinition definition) 用于获取事务。 commit(TransactionStatus status) 用于提交事务 rollback(TransactionStatus

10、status) 用于回滚事务,14,Spring 声明式事务,Spring针对不同的事务实现提供了不同的事务抽象。 DataSourceTransactionManager提供了对JDBC事务的支持 HibernateTransactionMangager提供了对Hibernate事务的支持 JDOTransactionManager对使用JDO持久化的事务支持 JTATransactionManager使用JTA来管理事务,应用跨多个数据源时使用,15,Spring 事务抽象,事务抽象可作为一个bean在配置文件中声明,它实际上是针对于不同的ORM机制的事务代理对象。 配置JDBC事务抽象,

11、配置Hibernate事务抽象,16,Spring 编程事务,Spring提供了TransactionTemplate模板类,其使用具体的事务抽象封装了通用事务操作。 例配置TransactionTemplate并将其注入到业务类,17,Spring 编程事务,在代码中使用TransactionTemplate,this.getTrxTemplate().execute(new TransactionCallback() public Object doInTransaction(TransactionStatus ts) try /TODO:在事务中运行的脚本 catch(Exception

12、 e) ts.setRollbackOnly();/设置回滚 return null;/正常返回将提供交事务 );,18,Spring 声明式事务,Spring的声明式事务是建立在拦截通知之上的,通过配置事务策略决定在方法之前是否开始事务在方法执行之后是否提交事务。 TransactionProxyFactoryBean用于产生单个对象的事务代理对象,它默认织入了事务拦截。 TransactionInterceptor Spring提供的事务拦截通知。,19,Spring 声明式事务,TransactionInterceptor的属性 transactionManager提定拦截使用的事务抽象

13、 transactionAttributes提定拦截的事务策略,事务策略用于配置事务拦截开始,提交或回滚事务的策略,它由四部分组成: 传播行为 隔离级别 只读提示 事务超时,20,Spring 事务策略,传播行为,声明事务的边界,指定何时开始一个事务。 常见的取值如下:,21,Spring 事务策略,事务隔离级别,用于解决事务并发问题。 常见的取值如下:,22,Spring 声明式事务,只读提示,用于指定事务是否只能执行只读操作。 事务超时,提定事务的执行时间超时后将自动回滚。 示例配置事务拦截,PROPAGATION_REQUIRED,ISOLATION_DEFAULT,-Throwable

14、,23,Spring 声明式事务,事务拦截可被用于产生代理对象或使用自动代理织入到目标对象。 示例中展示了将事务拦截织入到名称以Srv结尾的目标对象中。,trxInterceptor*Srv,24,Spring 声明式事务,TransactionProxyFactoryBean用于产生单个对象的事务代理对象。,PROPAGATION_REQUIRED,ISOLATION_DEFAULT,-Throwable,25,Spring2.0 声明式事务,Spring2.0中引入了注解用于声明方法的事务 引入事务相关的xml配置元素,指定事务抽象,26,Spring2.0 声明式事务,在方法前添加Tra

15、nsaction注解用于指定方法的事务策略,Transactional public void addService() ,27,Spring 调度,调度是指按照一定的时间或规率重复执行一项任务。 Spring中的调度是建立在Quartz的基础之上。 Quartz支持频率调度及时间点调度两种方式。 SimpleTriggerBean用于指定按频率调度。 CronTriggerBean用于指定时间点调度,28,Spring 调度,Spring中建立调度的基本步骤: 建立调度的目标类,目标类是一个继承了QuartzJobBean的类 在Spring中注册调度任务,调度任务是一个JobDetailB

16、ean的实例,通过它的jobClass属性指定目标类,通过jobDataAsMap向目标类注入属性。 配置调度CronTriggerBean或SimpleTriggerBean指定其时间点或频率 启动调度,通过注册SchedulerFactoryBean来实现,它的triggers用于指定待启动的调度。,29,Spring 调度,示例中注册了一调度任务,/指定了目标类,每次调试都会建立一个新的实例/用于向目标类实例注入属性值key为属性名,30,Spring 调度,示例注册一个SimpleTriggerBean,每2秒钟执行一次。,/指定调度时间间隔此处为2秒/指定调度执行次数,不指定无穷次,

17、31,Spring 调度,示例注册一个SimpleTriggerBean,每2秒钟执行一次。,SimpleTriggerBean常见属性 jobDetail指定调度任务为JobDetailBean的实例 repeatInterval指定间隔时间 repeatCount指定次数,不指定无穷次 startDelay指定延迟多少毫秒启动调度,默认立即 startTime指定某个时间点启动调试,默认立即,32,Spring 调度,注册一个CronTriggerBean ,每天早上六点执行。,0 0 6 * * ? *,CronTriggerBean常见属性 jobDetail指定调度任务为JobDet

18、ailBean的实例 cronExpression指定重复执行的时间点,由七个数位表示。1.表示秒,2表示分,3表示小时(0-23),4表示日期(1-31),5.表示月份(1-12),6表示星期(1-7 1为星期天),7表示年(1970-2099),*表示任意,?表示不设置注:星期与日期不可同时指定,33,Spring 调度,示例注册一个SchedulerFactoryBean实例,用于启动所有调度。,34,Spring单元测试建立在Junit测试的基础之上。 AbstractDependencyInjectionSpringContextTests抽象类继承了Junit的TestCase,继

19、承它的测试Spring将自动注入测试实例的属性。 AbstractTransactionalDataSourceSpringContextTests用于在数据库测试时,在测试用例执行时需要验证数据库中的数据,在测试用例执行后需要恢复数据库数据的情形。,Spring单元测试,35,继承AbstractDependencyInjectionSpringContextTests的测试类需要重载getConfigLocations或getConfigPath方法用于提供Spring配置文件。,Spring单元测试,public class UserDaoTests extends AbstractDe

20、pendencyInjectionSpringContextTests Override protected String getConfigLocations() return new String“resource/applicationContext.xml“; ,36,Spring单元测试,public class UserDaoTests extends AbstractDependencyInjectionSpringContextTests private UserDao userDao = null; public void setUserDao(UserDao userDao

21、) private JdbcTemplate jt = null; public void setJt(JdbcTemplate jt) protected String getConfigLocations() public void testAddUser() User user = new User(); user.setName(“jerry“);user.setPwd(“123“); user.setType(“admin“);user.setUserid(“jerry“); /调用DAO userDao.addUser(user); /检查数据库中是否存在 assertEquals

22、(jt.queryForObject(“select name from users where userid = jerry“, String.class), “jerry“); ,37,AbstractTransactionalDataSourceSpringContextTests继承了AbstractTransactionalSpringContextTests,继承AbstractTransactionalSpringContextTests的测试在每一个测试用例开始时会开始一个事务,在测试用例执行后会自动回滚事务,测试用例因此不影响数据库的数据。 配置AbstractTransactionalDataSourceSpringContextTests必需要在Spring配置文件中配置一数据源。 配置AbstractTransactionalSpringContextTests必需要在spring配置中配置一个事务抽象。,Spring单元测试,38,总结,Spring中JDBC数据源的配置 JDBC模板类的使用 Spring与Hibernate的集成 Hibernate模板类的使用。 Spring的事务抽象 编程事务使用与声明式事务的配置 Quartz调度的配置 Spring的单元测试,

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报