当前位置: 首页 > news >正文

焦作市网站建设_网站建设公司_腾讯云_seo优化

网站的开发流程有哪几个阶段,上海莱布拉网站建设,成都全程网络营销策划机构,wordpress 流量监控前些天发现了一个巨牛的人工智能学习网站#xff0c;通俗易懂#xff0c;风趣幽默#xff0c;忍不住分享一下给大家。点击跳转到教程。 先让我们看代码吧#xff01; 以下代码为在“Spring3事务管理——基于tx/aop命名空间的配置”基础上修改。首先修改applicationContext…前些天发现了一个巨牛的人工智能学习网站通俗易懂风趣幽默忍不住分享一下给大家。点击跳转到教程。 先让我们看代码吧 以下代码为在“Spring3事务管理——基于tx/aop命名空间的配置”基础上修改。首先修改applicationContext.xml如下 ?   [html] view plain copy !-- 定义一个数据源 --  bean iddataSource classorg.apache.tomcat.jdbc.pool.DataSource          property namedriverClassName valuecom.mysql.jdbc.Driver /          property nameurl valuejdbc:mysql://localhost:3306/spring_test /          property nameusername valueroot /          property namepassword valueroot /  /bean     !-- 定义JdbcTemplate的Bean --  bean idjdbcTemplate classorg.springframework.jdbc.core.JdbcTemplate          p:dataSource-refdataSource  /bean     !-- 配置事务管理器 --  bean idtxManager          classorg.springframework.jdbc.datasource.DataSourceTransactionManager          p:dataSource-refdataSource  /bean     !-- enables scanning for Transactional annotations --  tx:annotation-driven transaction-managertxManager /     !-- 在该Bean的代码中标注Transactional可以被事务管理器注入 --  bean iduserScore          classnet.hingyi.springDemo.transaction.service.UserScoreServiceImpl          p:userScoreRepository-refuserScoreRepository_jdbc /     bean iduserScoreRepository_jdbc          classnet.hingyi.springDemo.transaction.repository.UserScoreRepositoryImpl          p:jdbcTemplate-refjdbcTemplate /   实现类代码 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Transactional publicclassUserScoreRepositoryImpl implementsUserScoreRepository {     privateJdbcTemplate jdbcTemplate;     Override     publicUserScore getUserSocore(String userNo) {     finalUserScore us  newUserScore();     ...     returnus;     }     ... } OK了以上就实现了简单的事务管理了。现在再稍微了解下Transactional。 在配置文件中默认情况下tx:annotation-driven会自动使用名称为transactionManager的事务管理器。所以如果定义的事务管理器名称为transactionManager那么就可以直接使用tx:annotation-driven/。如下 ? 1 2 3 4 5 6 7 8 !-- 配置事务管理器 -- beanidtransactionManager     classorg.springframework.jdbc.datasource.DataSourceTransactionManager     p:dataSource-refdataSource /bean !-- enables scanning for Transactional annotations -- tx:annotation-driven/ tx:annotation-driven一共有四个属性如下 mode指定Spring事务管理框架创建通知bean的方式。可用的值有proxy和aspectj。前者是默认值表示通知对象是个JDK代理后者表示Spring AOP会使用AspectJ创建代理 proxy-target-class如果为trueSpring将创建子类来代理业务类如果为false则使用基于接口的代理。如果使用子类代理需要在类路径中添加CGLib.jar类库 order如果业务类除事务切面外还需要织入其他的切面通过该属性可以控制事务切面在目标连接点的织入顺序。 transaction-manager指定到现有的PlatformTransaction Manager bean的引用通知会使用该引用 Transactional的属性 属性名  类型  说明  isolation  枚举org.springframework.transaction.annotation.Isolation的值  事务隔离级别  noRollbackFor  Class? extends Throwable[]  一组异常类遇到时不回滚。默认为{} noRollbackForClassName  Stirng[]  一组异常类名遇到时不回滚默认为{} propagation  枚举org.springframework.transaction.annotation.Propagation的值  事务传播行为  readOnly  boolean  事务读写性  rollbackFor  Class? extends Throwable[]  一组异常类遇到时回滚  rollbackForClassName  Stirng[]  一组异常类名遇到时回滚  timeout  int  超时时间以秒为单位  value  String  可选的限定描述符指定使用的事务管理器  Transactional标注的位置 Transactional注解可以标注在类和方法上也可以标注在定义的接口和接口方法上。 如果我们在接口上标注Transactional注解会留下这样的隐患因为注解不能被继承所以业务接口中标注的Transactional注解不会被业务实现类继承。所以可能会出现不启动事务的情况。所以Spring建议我们将Transaction注解在实现类上。 在方法上的Transactional注解会覆盖掉类上的Transactional。 使用不同的事务管理器 如果我们要程序中使用多个事务管理器主要是针对多数据源的情况可以通过以下的方式实现 Service代码 ? 1 2 3 4 5 6 7 8 9 10 11 publicclassMultiTxService {     Transactional(tran_1)     publicvoidaddTest(intid){               }     Transactional(tran_2)     publicvoiddeleteTest(intid){               } } applicationContext.xml配置如下  ? 1 2 3 4 5 6 7 8 9 10 beanidtran_1     classorg.springframework.jdbc.datasource.DataSourceTransactionManager     p:dataSource-refdataSource     qualifiervaluetran_1/ /bean beanidtran_2     classorg.springframework.jdbc.datasource.DataSourceTransactionManager     p:dataSource-refdataSource     qualifiervaluetran_2/ /bean 经过以上的代码每个事务都会绑定各自的独立的数据源进行各自的事务管理。我们可以优化下以上代码可以自定义一个绑定到特定事务管理器的注解然后直接使用这个自定义的注解进行标识 ? 1 2 3 4 5 6 Target({ElementType.METHOD,ElementType.TYPE}) Retention(RetentionPolicy.RUNTIME) Transactional(tran_1) publicinterfaceCustomerTransactional { } 在Service代码中使用 ? 1 2 3 4 5 6 7 ... //使用名为tran_1的事务管理器 CustomerTransactional public void addTest(String str){       } … Spring在TransactionDefinition接口中规定了7种类型的事务传播行为 它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播 事务传播行为类型 事务传播行为类型 说明 PROPAGATION_REQUIRED 如果当前没有事务就新建一个事务如果已经存在一个事务中加入到这个事务中。这是最常见的选择。 PROPAGATION_SUPPORTS 支持当前事务如果当前没有事务就以非事务方式执行。 PROPAGATION_MANDATORY 使用当前的事务如果当前没有事务就抛出异常。 PROPAGATION_REQUIRES_NEW 新建事务如果当前存在事务把当前事务挂起。 PROPAGATION_NOT_SUPPORTED 以非事务方式执行操作如果当前存在事务就把当前事务挂起。 PROPAGATION_NEVER 以非事务方式执行如果当前存在事务则抛出异常。 PROPAGATION_NESTED 如果当前存在事务则在嵌套事务内执行。如果当前没有事务则执行与PROPAGATION_REQUIRED类 似的操作。     spring 事务注解默认遇到throw new RuntimeException(...);会回滚 需要捕获的throw new Exception(...);不会回滚// 指定回滚 Transactional(rollbackForException.class) public void methodName() {// 不会回滚throw new Exception(...);} //指定不回滚 Transactional(noRollbackForException.class)public ItimDaoImpl getItemDaoImpl() {// 会回滚throw new RuntimeException(注释);} // 如果有事务,那么加入事务,没有的话新建一个(不写的情况下)Transactional(propagationPropagation.REQUIRED) // 容器不为这个方法开启事务Transactional(propagationPropagation.NOT_SUPPORTED)// 不管是否存在事务,都创建一个新的事务,原来的挂起,新的执行完毕,继续执行老的事务Transactional(propagationPropagation.REQUIRES_NEW) // 必须在一个已有的事务中执行,否则抛出异常Transactional(propagationPropagation.MANDATORY)// 必须在一个没有的事务中执行,否则抛出异常(与Propagation.MANDATORY相反)Transactional(propagationPropagation.NEVER) // 如果其他bean调用这个方法,在其他bean中声明事务,那就用事务.如果其他bean没有声明事务,那就不用事务.Transactional(propagationPropagation.SUPPORTS) /*public void methodName(){// 本类的修改方法 1update();// 调用其他类的修改方法otherBean.update();// 本类的修改方法 2update();}other失败了不会影响 本类的修改提交成功本类update的失败,other也失败*/ Transactional(propagationPropagation.NESTED) // readOnlytrue只读,能插入但不能更新,删除 Transactional (propagation Propagation.REQUIRED,readOnlytrue) // 设置超时时间 Transactional (propagation Propagation.REQUIRED,timeout30) // 设置数据库隔离级别 Transactional (propagation Propagation.REQUIRED,isolationIsolation.DEFAULT)
http://www.ihoyoo.com/news/101993.html

相关文章:

  • 门户网站建设的报价济宁建设局网站
  • 成都网站建设 川icp备手机上有那种网站吗
  • 网站建设咨询推荐企业管理培训课程表
  • 机票旅游网站建设网站建设的流程图
  • 网站制作开发海口建站模板厂家
  • 官方网站建设的公司wordpress和mvc
  • 网站开发的义乌外贸论坛
  • 南宁网站设计平台抖音流量推广神器软件免费
  • 三更app下载网站wordpress后台很卡
  • 周浦手机网站建设公司电子政务网站开发
  • 个人可以备案网站的内容网站备案在哪儿
  • 网站建设没有业务怎么办网站开发 名片
  • 用phpcms做的网站模板数据库修改网站后台密码
  • 做几何图形和网站搜索引擎优化要考虑哪些方面
  • 网站备案ip查询系统网站推广的阶段目标
  • 重庆建筑模板苏州关键词优化平台
  • 国际传媒网站设计百度网站地址提交
  • 网站开发的选择是什么福州短视频seo方法
  • 做网站引流的最佳方法建设网站需要哪个语言编译器
  • 免费wap建站的网址是什么了济南广告设计公司前十名
  • 太原网站建设托管植树节ppt模板下载免费版
  • 深圳网站优化排名公司给个网站好人有好报2021
  • 网站建设视频下载南昌网站建设公司信息
  • 安庆建设机械网站高清素材免费下载
  • 网站形式的具体例子哈尔滨快速建站合作
  • 深圳注明企业网站设计柳州做网站优化
  • wordpress系统下载重庆seo建站
  • 做网站卖链接外国网站签到做任务每月挣钱
  • 优化关键词的公司搜索引擎优化的专家是什么意思
  • 四川城乡住房建设厅官方网站导航滑动整屏网站