精华内容
下载资源
问答
  • 一、背景: 目前很多项目的事务处理都是利用Spring的注解式事务实现的(@Transactional)。 在测试事务回滚的过程中发现如下现象: throw new RuntimeException("xxxxxxxxxxxx");...二、关于spring事务使...

    一、背景:

    目前很多项目的事务处理都是利用Spring的注解式事务实现的(@Transactional)。

     

    • 在测试事务回滚的过程中发现如下现象:
    
    throw new RuntimeException("xxxxxxxxxxxx"); 事务回滚
    
    throw new Exception("xxxxxxxxxxxx");        事务没有回滚  

     

    二、关于spring事务使用说明:

    基于Spring AOP的事务管理,即声明式事务管理,默认是针对RuntimeException回滚,既默认只对RuntimeException()及其子类进行事务回滚;非运行时类型的异常默认是不会回滚的。

     

    三、依赖事务管理的业务代码中出现异常该如何处理?

    三种回滚处理方式:

    1、针对该业务代码进行封装,二次抛出RuntimeException类型的异常;

    2、利用硬编码的方式,借助spring api对事务进行显式的回滚;

    3、在spring配置文件中对rollback-for属性赋值。Tip:该配置也可以直接加在注解上。

    <tx:advice id="txAdvice" transaction-manager="transactionManager">
       <tx:attributes>
         <tx:method name="*" rollback-for="com.wangcw.exception.XyzException"/>
       </tx:attributes>
     </tx:advice>

      同时,Spring配置文件中也可以声明出不进行回滚的异常。

    <tx:advice id="txAdvice">
        <tx:attributes>
           <tx:method name="update*" no-rollback-for="IOException"/>
           <tx:method name="*"/>
        </tx:attributes>
     </tx:advice>

     

    展开全文
  • 关于 Spring 中使用 classpath: 构建资源路径的官方描述

    关于 Spring 中使用 classpath: 构建资源路径的官方描述

    太阳火神的美丽人生 (http://blog.csdn.net/opengl_es)

    本文遵循“署名-非商业用途-保持一致”创作公用协议

    转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino否则,出自本博客的文章拒绝转载或再转载,谢谢合作。


    从官方资料中找出这些原子知识点,这就是我称之为可以作为原创的点。不是知识本身,而是从原文中寻找并摘出这个原子知识点。

    -----------------------------

    终于想到这个办法,作为原创可以发布给更多的朋友了解,而不用再借翻译之名。

    说来,我看这些东西还行,一个一个地翻译,确实有些累,因为你明白是啥意思,即使是多层面的意思,相对要容易得多,而你要想找一句适当的中文来表达,就难了。

    这就是英文学习的要点所在,也是大学时老师给的建议,不能为翻译成中文而学英文,要为明白是啥意思而学英文,即读整句英文,越多越理解。

    那么中文的事情,我只能实话实说,那是我没学好,不过毕业后这么多年,尤其最近五年,微信朋友圈里的鸡汤文看了N多,N遍地看,搞得现在说起话来都有些鸡汤味儿。

    由此可见,想真正看书来扩充知识,在眼下百元左右一本的书价情况下,感觉微信朋友圈会更好些。

    微信朋友圈里,可以把书本上关联的篇篇文章,划成最小单元,再串联起来,这可以叫原子化吗?

    也许知识,成体系的知识,想要在学校之外能高效地传播,那么抓住碎片时间,并有与碎片时间相配的知识,那么这样的知识就是原子化知识了。

    那么,由此可推理,这可能并不是处于浮燥社会的时下我一个人的想法,想来应该 是很多厌烦了这种环境的人群所想要的。

    结论,把书本上的传统知识搬到朋友圈里,利已利人。如果没有,现学现卖也是很好的,交流心得嘛。

    ---------------------------------------

    在 Spring 4.x 官方文档中搜 classpath: 和 classpath*: 找到如下链接及相关描述:

    http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#resources-app-ctx-wildcards-in-resource-paths






    展开全文
  • 关于Spring Bean的生命周期

    万次阅读 多人点赞 2018-10-08 10:47:04
     Spring Bean 的生命周期在整个 Spring 中占有很重要的位置,从BeanFactory或ApplicationContext取得的实例为Singleton,也就是预设为每一个Bean的别名只能维持一个实例,而不是每次都产生一个新的对象使用...

    一、简介
        Spring Bean 的生命周期在整个 Spring 中占有很重要的位置,从BeanFactory或ApplicationContext取得的实例为Singleton,也就是预设为每一个Bean的别名只能维持一个实例,而不是每次都产生一个新的对象使用Singleton模式产生单一实例,在spring中,singleton属性默认是true,只有设定为false,则每次指定别名取得的Bean时都会产生一个新的实例,Spring只帮我们管理单例模式Bean的完整生命周期,对于prototype的bean,Spring在创建好交给使用者之后则不会再管理后续的生命周期。

    二、图例
        生命周期图如下:
        
        也可以概括为:
        
        
    三、图例说明
    1、实例化一个Bean
    2、按照Spring上下文对实例化的Bean进行配置,也就是IOC注入
    3、如果这个Bean已经实现了BeanNameAware接口,会调用它实现的setBeanName(String)方法,传递的参数就是Spring配置文件中Bean的id值


    4、如果这个Bean已经实现了BeanFactoryAware接口,会调用它实现的setBeanFactory(BeanFactory),传递的是Spring工厂自身


    5、如果这个Bean已经实现了ApplicationContextAware接口,会调用setApplicationContext(ApplicationContext)方法,传入Spring上下文


    6、如果这个Bean关联了BeanPostProcessor接口,将会调用postProcessBeforeInitialization(Object obj, String s)方法,
    BeanPostProcessor经常被用作是Bean内容的更改,并且由于这个是在Bean初始化结束时调用那个的方法,也可以被应用于内存或缓存技术;


    7、如果Bean在Spring配置文件中配置了init-method属性会自动调用其配置的初始化方法。
    8、如果这个Bean关联了BeanPostProcessor接口,将会调用postProcessAfterInitialization(Object obj, String s)方法
    9、当Bean不再需要时,会经过清理阶段,如果Bean实现了DisposableBean这个接口,会调用那个其实现的destroy()方法;


    10、最后,如果这个Bean的Spring配置中配置了destroy-method属性,会自动调用其配置的销毁方法。

    展开全文
  • 关于spring事务的传播机制

    千次阅读 2019-03-18 12:32:18
    在本篇后边所描述的所有关于spring中事务的传播机制的前提是发生才不同类实例方法之间的方法调用, 不包含同类实例的方法的调用. 为了解释为什么要在这里强调上边的这一点, 需要稍微的解释一下spring对于AOP的代理...

    1.写在前面

    首先需要明确的一点是. 在本篇后边所描述的所有关于spring中事务的传播机制的前提是发生才不同类实例方法之间的方法调用, 不包含同类实例的方法的调用.

    为了解释为什么要在这里强调上边的这一点, 需要稍微的解释一下spring对于AOP的代理方式.

    spring的事务管理是通过AOP实现的, spring的AOP会使用JDK代理或者cglib代理两种方式, 具体使用哪种代理方式spring有一套自动切换机制, 具体切换机制请自行百度. 这里要说的是, spring的AOP默认使用JDK的代理方式, 但是当一个Bean中包含声明了事务的方法时, spring对该类的代理将切换到cglib方式, 并且在spring上下文中纳管的该类对对象实例其实是cglib代理的代理对象, 而不是该类本身的实例.

    对上边这段描述你可以这样简单的理解: 包含声明了事务的方法的类, 在实例化时会实例化出两个实例:一个是cglib的代理实例,另一个是该类本身真正的实例. spring上下文纳管的是cglib的代理实例.

    由上边的描述我们可以知道, 当我们在spring环境中通过DI或者其他的方式从spring上下文中获取的实例其实是cglib的代理实例, 此时是可以正常触发关于事务管理相关逻辑的;而在类自身真正的对象内部通过this调用对象内部其他的实例方法时其实并不会走cglib的代理类, 故而也就不会触发事务管理的相关逻辑的.

    2.spring事务的传播机制列表

    spring事务的传播机制共7中,可以分为3组+1个特殊来分析或者记忆

    1).REQUIRE组

          1.REQUIRED:当前存在事务则使用当前的事务, 当前不存在事务则创建一个新的事务

          2.REQUIRES_NEW:创建新事务, 如果已经存在事务, 则把已存在的事务挂起

    2).SUPPORT组

          1.SUPPORTS:支持事务. 如果当前存在事务则加入该事务, 如果不存在事务则以无事务状态执行

          2.NOT_SUPPORTED:不支持事务. 在无事务状态下执行,如果已经存在事务则挂起已存在的事务

    3).Exception组

          1.MANDATORY:必须在事务中执行, 如果当前不存在事务, 则抛出异常

           2.NEVER: 不可在事务中执行, 如果当前存在事务, 则抛出异常

    4).NESTED:嵌套事务. 如果当前存在事务, 则嵌套执行, 如果当前不存在事务, 则开启新事务

    3.关于NESTED的理解

    对于以上7中传播机制, 大部分大家根据解释说明就可以比较好的理解, 这里就不在详细说明了. 唯一比较晦涩的可能就是关于NESTED的理解. 现在说一下对于这部分的理解

    首先贴出对于NESTED机制的注释说明:

    /**
               * Execute within a nested transaction if a current transaction exists,
               * behave like {@link #PROPAGATION_REQUIRED} else. There is no analogous
               * feature in EJB.
               * <p><b>NOTE:</b> Actual creation of a nested transaction will only work on
               * specific transaction managers. Out of the box, this only applies to the JDBC
               * {@link org.springframework.jdbc.datasource.DataSourceTransactionManager}
               * when working on a JDBC 3.0 driver. Some JTA providers might support
               * nested transactions as well.
               * @see org.springframework.jdbc.datasource.DataSourceTransactionManager
               */

    由注释可以看出, 如果当前不存在事务的话, NESTED机制的操作其实是和REQUIRED机制是一样的.但是如果当前存在事务的话,NESTED机制会创建一个事务, 新创建的事务嵌套在当前事务中执行. 说到这里, 大家可能会想到REQUIRES_NEW机制, 在当前存在事务的情况下这两个机制都会创建事务, 不同的是REQUIRES_NEW会把已存在的事务挂起, 而NESTED机制会把新创建的事务嵌套在原事务中执行.那么这两者的区别是什么呢?

    首相需要明确的是, REQUIRES_NEW机制是真正意义上的独立的新事务, 新事务与原事务没有一毛钱关系, 他拥有自己的隔离区,锁等等事务的属性. 而NESTED则是真正意义上的原事务的子事务. 他所创建的事务可以理解为在原事务中设置了一个savepoint, 新事务相当于内部事务, 原事务相当于外部事务, 内部事务的提交依赖于外部事务的提交. 内部事务的回滚其实是把操作回到savepoint点的状态

    使用NESTED机制需要设置transactionManager的nestedTransactionAllowed为true

    展开全文
  • JAVA关于Spring 面试题汇总

    万次阅读 2018-08-28 15:52:46
    从事JAVA开发的给小伙伴都知道,Spring是java开发当中必不可少的一个框架,不管是面试、开发还是工作当中,Spring的地位现在是独树一帜。比如现在SpringBoot,SpringColud等都是目前开发当中很火的框架。 原文地址...
  • 关于SpringSpring MVC的43个问题【问题汇总】

    千次阅读 多人点赞 2018-07-10 10:19:25
    方便解耦,简化开发 通过Spring提供的IoC容器,可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。 2). AOP编程的支持 通过Spring提供的AOP功能,方便进行面...
  • 问题描述当使用SpringBoot提供Restful接口服务时,可以非常方便快速地通过SpringBoot来发布。然而需要考虑的问题: 使用安全机制 使用外在数据库保存session 针对安全机制,官网提供了一个demo: 官网demo地址为:...
  • 关于spring的面试题

    千次阅读 2017-06-01 16:35:13
    3. 请描述JDK动态代理和CGLI代理的区别? 4. 简述ProxyFactoryBean的作用是什么? 5. 叙述Spring中的自动代理的原理? 5. 写出创建代理对象需指定的三要素是什么? 6. 写出代理的两种方式分别是什
  • RT: 问题描述:每个数据访问层都对hibernateTemplate进行了注入,现想可不可以拦截DAO层,通过配置给每个层的hibernateTemplate进行注入?具体的实例更好
  • 关于spring-boot-starter-parent报红的解决方法

    千次阅读 多人点赞 2021-03-15 22:07:45
    关于spring-boot-starter-parent报红的解决方法 问题描述 在maven项目中若要导入SpringBoot,父级依赖的spring-boot-starter-parent通常都会出现Project 'org.springframework.boot:spring-boot-starter-parent:x.x....
  • Spring

    万次阅读 多人点赞 2020-02-07 13:07:09
    Spring1.Spring是什么?有什么好处?2.IOC是什么?有什么好处?具体过程?3.DI是什么?4.IOC和DI的关系?5.bean标签的属性有哪些?6.IOC创建对象有哪几种方式?7.Spring是如何实现IOC的?也就是如何创建对象的? 1....
  • 1.什么是 Spring 框架?Spring 框架有哪些主要模块? Spring 框架是一个为 Java 应用程序的开发提供了综合、广泛的基础性支持的 Java 平台。Spring帮助开发者解决了开发中基础性的问题,使得开发人员可以专注于应用...
  • 这篇文章总结了一些关于Spring框架的重要问题,这些问题都是你在面试或笔试过程中可能会被问到的。下次你再也不用担心你的面试了,Java Code Geeks这就帮你解答。 大多数你可能被问到的问题都列举在下面的列表中...
  • Spring MVC面试题(2020最新版)

    万次阅读 多人点赞 2020-02-19 17:54:38
    文章目录概述什么是Spring MVC?简单介绍下你对Spring MVC的理解?Spring MVC的优点核心组件Spring MVC的主要组件?...工作原理请描述Spring MVC的工作流程?描述一下 DispatcherServlet 的工作...
  • spring ppt

    2018-03-23 15:11:02
    关于spring框架的基础知识的ppt。该ppt较简略地描述spring的相关基础知识。
  • 简单描述Spring -- Spring的个人理解

    千次阅读 2017-07-11 14:28:09
    主要是我关于Spring的一些简单理解,比较浅显。。 Spring主要是为企业开发解决了系列的问题,而且可以十分方便的与其他框架集成在一起。最显著的特性是IOC与AOP。 IOC 控制反转,所有的实例交由IOC容器管理。...
  • 史上最全Spring Boot面试题(含答案)看完就是Spring Boot专家! 一.Spring Boot、Spring MVC 和 Spring 有什么区别? SpringFrame SpringFramework 最重要的特征是依赖注入。所有 SpringModules 不是依赖注入...
  • spring基础

    2018-10-23 14:14:31
    Spring基础概念,简单的描述javaSpring框架概述,SpringAOP,Spring IOC
  • Vue + Spring Boot 项目实战(一):项目简介

    万次阅读 多人点赞 2019-03-31 11:19:37
    白卷是一款使用 Vue+Spring Boot 开发的前后端分离项目,主要帮助 web 开发初学者通过实践方式打通各个环节的知识。
  • spring security原理和机制

    千次阅读 多人点赞 2021-06-25 21:35:08
    正如你可能知道的关于安全方面的两个主要区域是“认证”和“授权”(或者访问控 制),一般来说,Web 应用的安全性包括用户认证(Authentication)和用户授权 (Authorization)两个部分,这两点也是 Spring
  • 刚开始接触Spring的时候一些基础的教学在说到Bean的创建时会提到Spring的单例模式,就是说默认情况下Spring中定义的Bean是以单例模式创建的。如果以前了解设计模式中的单例模式的话很容易对这种说法产生先入为主的...
  • 我们可以通过spring.cloud.stream.kafka.bindings.springCloudBusInput.consumer.group来指定默认总线topic:spingCloudBus的consumer group,比如设置成${spring.application.name}:${spring.application.index},这样...
  • Spring实战

    2018-05-28 16:21:40
    第四部分描述了如何使用Spring与其他的应用和服务进行集成。 《Spring实战(第4版)》适用于已具有一定Java 编程基础的读者,以及在Java 平台下进行各类软件开发的开发人员、测试人员,尤其适用于企业级Java 开发...
  • 在eclipse下如何解决Spring boot读取配置文件出现中文乱码的问题呢?
  • 关于Spring中,注入的bean为null的情况

    千次阅读 2018-08-13 13:01:11
    描述问题 在写项目的时候,写了一个工具类或者测试类,然后调用相关的service层或者dao层的bean,但是通通为null,为啥呢? 问题原因 两种情况会导致如此问题,一个是工具类中的方法为静态方法,静态方法调用了...
  • 简单描述一下Spring AOP

    千次阅读 2018-07-30 13:51:13
    * 对函数的入口,结束(被称为Aspect - - 切面)都进行日志的打印; * 函数的进行过程被看做 Jion point,类似的可以是对属性的访问前后,... * 所以说spring aop 并不是一个完整的aop实现,当然spring aop的目标...
  • 问题描述:最近由于公司需求,需要再原来支持jsp的项目添加freemarker的支持进行功能扩展,网上找了好多帖子都没有解决问题,结果还是官方的比较可靠啊。由于本身不支持jsp,所以继承了WebMvcConfigurerAdapter类...
  • 关于spring中 @Aspect的不起作用的问题

    千次阅读 2017-09-25 15:24:26
    今天用到 spring中的aop ,@Aspect 注解,当我将@Before中的  描述指定为 单独的1个类时,aop 不起作用; 而 当作用在1个 实现某个接口的实现类后, 或者继承于某个超类时 就奏效了。 或许这就是...
  • 1、 简述你对IoC(Inversion of Control)的理解,描述一下Spring中实现DI(Dependency Injection)的几种方式。2、Spring提倡面向接口编程,请讲一下你对它的理解,它有什么好处。3、Spring的Bean有哪些作用域。4...
  • spring_tld描述文件

    千次阅读 2014-07-23 17:22:44
    spring_tld描述文件

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 244,460
精华内容 97,784
关键字:

关于spring的描述

spring 订阅