欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    spring教程3应用.ppt

    • 资源ID:6520226       资源大小:280.50KB        全文页数:38页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    spring教程3应用.ppt

    第 三 章,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 该包定义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 Core,JDBCTemplate提供了对JDBC操作的封装PreparedStatement(接口)用于建立PreparedStatement的回调接口ResultSetExtractor(接口)用于将Result数据转换成Java的POJO的回调接口RowCallbackHandler(接口)用于处理结果集的回调接口,例如删除记录集中的行或更新记录集中的行。RowMapper(接口)用于将结果集中当前行映射到一个Java对象,7,Spring JDBC 示例,使用JDBCTemplate将查询结果转换成二维数组,List rows=(List)this.getJdbcTemplate().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/将结果集转换成二维数组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 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.prepareStatement(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指定配置文件mappingResources指定映射文件,11,Spring 与Hibernate,HibernateTemplate用于提供对Hibernate操作的封装。,HibernateDaoSupport用于提供建立Hibernate DAO的父类。,12,Spring 与Hibernate,Spring提供了OpenSessionFilter用于解决Hibernate的延迟初始化问题,示例在Web.xml中配置OpenSessionFilter,openSessionFilterorg.springframework.orm.hibernate3.support.OpenSessionInViewFilteropenSessionFilter/*,13,Spring 声明式事务,声明式事务与编程式的事务本质区别在于前节通过配置来声明事务。Spring同时支持声明式事务与编程式事务。Spring事务抽象接口PlatformTransactionManager 它实现了统一的事务获取,提交,回滚的方法。TransactionStatus getTransaction(TransactionDefinition definition)用于获取事务。commit(TransactionStatus status)用于提交事务rollback(TransactionStatus status)用于回滚事务,14,Spring 声明式事务,Spring针对不同的事务实现提供了不同的事务抽象。DataSourceTransactionManager提供了对JDBC事务的支持HibernateTransactionMangager提供了对Hibernate事务的支持JDOTransactionManager对使用JDO持久化的事务支持JTATransactionManager使用JTA来管理事务,应用跨多个数据源时使用,15,Spring 事务抽象,事务抽象可作为一个bean在配置文件中声明,它实际上是针对于不同的ORM机制的事务代理对象。配置JDBC事务抽象,配置Hibernate事务抽象,16,Spring 编程事务,Spring提供了TransactionTemplate模板类,其使用具体的事务抽象封装了通用事务操作。例配置TransactionTemplate并将其注入到业务类,17,Spring 编程事务,在代码中使用TransactionTemplate,this.getTrxTemplate().execute(new TransactionCallback()public Object doInTransaction(TransactionStatus ts)try/TODO:在事务中运行的脚本catch(Exception e)ts.setRollbackOnly();/设置回滚return null;/正常返回将提供交事务);,18,Spring 声明式事务,Spring的声明式事务是建立在拦截通知之上的,通过配置事务策略决定在方法之前是否开始事务在方法执行之后是否提交事务。TransactionProxyFactoryBean用于产生单个对象的事务代理对象,它默认织入了事务拦截。TransactionInterceptor Spring提供的事务拦截通知。,19,Spring 声明式事务,TransactionInterceptor的属性transactionManager提定拦截使用的事务抽象transactionAttributes提定拦截的事务策略,事务策略用于配置事务拦截开始,提交或回滚事务的策略,它由四部分组成:传播行为隔离级别只读提示事务超时,20,Spring 事务策略,传播行为,声明事务的边界,指定何时开始一个事务。常见的取值如下:,21,Spring 事务策略,事务隔离级别,用于解决事务并发问题。常见的取值如下:,22,Spring 声明式事务,只读提示,用于指定事务是否只能执行只读操作。事务超时,提定事务的执行时间超时后将自动回滚。示例配置事务拦截,PROPAGATION_REQUIRED,ISOLATION_DEFAULT,-Throwable,23,Spring 声明式事务,事务拦截可被用于产生代理对象或使用自动代理织入到目标对象。示例中展示了将事务拦截织入到名称以Srv结尾的目标对象中。,trxInterceptor*Srv,24,Spring 声明式事务,TransactionProxyFactoryBean用于产生单个对象的事务代理对象。,PROPAGATION_REQUIRED,ISOLATION_DEFAULT,-Throwable,25,Spring2.0 声明式事务,Spring2.0中引入了注解用于声明方法的事务引入事务相关的xml配置元素,指定事务抽象,26,Spring2.0 声明式事务,在方法前添加Transaction注解用于指定方法的事务策略,Transactionalpublic void addService(),27,Spring 调度,调度是指按照一定的时间或规率重复执行一项任务。Spring中的调度是建立在Quartz的基础之上。Quartz支持频率调度及时间点调度两种方式。SimpleTriggerBean用于指定按频率调度。CronTriggerBean用于指定时间点调度,28,Spring 调度,Spring中建立调度的基本步骤:建立调度的目标类,目标类是一个继承了QuartzJobBean的类在Spring中注册调度任务,调度任务是一个JobDetailBean的实例,通过它的jobClass属性指定目标类,通过jobDataAsMap向目标类注入属性。配置调度CronTriggerBean或SimpleTriggerBean指定其时间点或频率启动调度,通过注册SchedulerFactoryBean来实现,它的triggers用于指定待启动的调度。,29,Spring 调度,示例中注册了一调度任务,/指定了目标类,每次调试都会建立一个新的实例/用于向目标类实例注入属性值key为属性名,30,Spring 调度,示例注册一个SimpleTriggerBean,每2秒钟执行一次。,/指定调度时间间隔此处为2秒/指定调度执行次数,不指定无穷次,31,Spring 调度,示例注册一个SimpleTriggerBean,每2秒钟执行一次。,SimpleTriggerBean常见属性jobDetail指定调度任务为JobDetailBean的实例repeatInterval指定间隔时间repeatCount指定次数,不指定无穷次startDelay指定延迟多少毫秒启动调度,默认立即startTime指定某个时间点启动调试,默认立即,32,Spring 调度,注册一个CronTriggerBean,每天早上六点执行。,0 0 6*?*,CronTriggerBean常见属性jobDetail指定调度任务为JobDetailBean的实例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,继承它的测试Spring将自动注入测试实例的属性。AbstractTransactionalDataSourceSpringContextTests用于在数据库测试时,在测试用例执行时需要验证数据库中的数据,在测试用例执行后需要恢复数据库数据的情形。,Spring单元测试,35,继承AbstractDependencyInjectionSpringContextTests的测试类需要重载getConfigLocations或getConfigPath方法用于提供Spring配置文件。,Spring单元测试,public class UserDaoTests extends AbstractDependencyInjectionSpringContextTests Overrideprotected String getConfigLocations()return new Stringresource/applicationContext.xml;,36,Spring单元测试,public class UserDaoTests extends AbstractDependencyInjectionSpringContextTests private UserDao userDao=null;public void setUserDao(UserDao userDao)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);/调用DAOuserDao.addUser(user);/检查数据库中是否存在assertEquals(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的单元测试,

    注意事项

    本文(spring教程3应用.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开