和声的基础知识

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了和声的基础知识相关的知识,希望对你有一定的参考价值。

和声为两个或两个以上不同的音按一定的法则同时发声而构成的音响组合。它包含:

①和弦,是和声的基本素材,由3个或3个以上不同的音,根据三度叠置或其他方法同时结合构成,这是和声的纵向结构。

②和声进行,指各和弦的先后连接,这是和声的横向运动。补充一句和声有明显的浓,淡,厚,薄的色彩作用;还有构成分句,分乐段和终止乐曲的作用。

扩展资料:

它在音乐中所起的作用大致有3个方面:

①声部的组合作用。在统一的和声基础上,各声部相互组合成为协调的整体。

②乐曲的结构作用。通过和声进行、收束式、调性布局等在构成曲式方面起重要作用。

③内容的表现作用。通过和声的色彩、织体以及配合其他因素,塑造音乐形象、表现音乐内容。和声的处理是音乐创作的重要写作技巧,也是对位、配器、曲式等其他作曲技法的基础。有时,曲调也由和声衍生。

参考资料来源:百度百科-和声

参考技术A 第一章 和弦新论

传统和声学把所有的和弦都归为三度关系来解释,并且力求和声进行的完美和规范。但是现代流行音乐特别是爵士音乐的和声已经高度复杂化和自由化,三度叠置虽然仍是和弦构成的基本原则,但已不是重要的解释手段。这年头可以这样说:把几个音合在一起发音就构成和弦。和声的进行是否规范属于次要问题,平行五,八度的错误基本上不予考虑。唯一的准则是:听起来是否舒服,到位。爵士音乐中复杂的加音和弦几乎使你分不清和弦的功能性,布鲁斯和弦同名大小调搅和在一起,莫名其妙的模进进行很难用经典的和声理论来解释。我们现在就进入现代和弦的奇妙世界。

第二章 和弦标记

本教程采用字母和弦标记法来表示和弦。这是流行音乐中通用的标记法,把它和级数标记法结合使用会感到很方便,能使你很透彻地领悟到不同调的和弦的相互微妙的关系,好象你的脑子里就有一张和弦表。下面我们就来熟悉这个标记法。

1、大三和弦:根音与三音是大三度,三音与五音是小三度,用根音的大写英文字母音名来表

示,如DO,MI,SOL和弦用C表示,FA,LA,DO和弦用F表示,降MI,SOL,降SI就用Eb表示,升FA,升LA,升DOL用F#表示。

2、小三和弦:根音与三音是小三度,三音与五音是大三度,用根音的大写英文字母音名加上小写m表示,如RE,FA,LA和弦用Dm表示,MI,SOL,SI和弦用Em表示,降MI,降SOL,降SI用Ebm表示。

3、增三和弦:根音与三音,三音与五音都是大三度,用根音的大写英文字母音名加上aug或加一个“+”。如DO,MI,升SOL和弦表示为Caug或C+,FA,LA,升DO和弦表示为Faug或F+。

4、减三和弦:根音与三音,三音与五音都是小三度,用根音的大写英文字母音名加上dim或一个“-”。如RE,FA,降LA,表示为Ddim或D-,升DO,MI,SOL表示为#Cdim或#C-。

5、大小七和弦:在大三和弦基础上再加小三度,用根音的大写英文字母音名加上“7”即可,如SOL,SI,RE,FA和弦用G7表示,LA,S升DOL,MI,SOL用A7表示。

6、大大七和弦:在大三和弦基础上再加大三度,用根音的大写英文字母音名加上Maj7表示,如DO,MI,SOL,SI和弦表示为Cmaj7,降SI,RE,FA,LA和弦表示为Bbmaj7.

7、小小七和弦:在小三和弦基础上再加小三度,用根音的大写英文字母音名加上“m7”表示。如LA,DO,MI,SOL和弦表示为Am7,RE,FA,LA,DO和弦表示为Dm7.

8、小大七和弦:在小三和弦基础上再加大三度,用根音的大写英文字母音名加上mM7表示,如DO,降MI,SOL,SI和弦表示为CmM7,LA,DO,MI,升SOL表示为AmM7.

9、减七和弦:在减三和弦的基础上再加小三度,用根音的大写英文字母音名加上dim7表示,如SI,RE,FA,降LA和弦表示为Bdim7,LA,DO,降MI,降SOL表示为Adim7.

10、半减七和弦:在减三和弦的基础上再加大三度,用根音的大写英文字母音名加上m7-5表示,如SI,RE,FA,LA和弦表示为Bm7-5,升FA,LA,DO,ME和弦表示为#Fm7-5.

11、加音和弦:它是指在一个以三度关系为基础的和弦上加上其它音,如加入六度音,九度音,四度音等,标记法为将这个加音的度数写于原和弦的右边,如DO,MI,SOL,LA和弦可标为C6,(LA是基于C和弦的加音),FA,LA,DO,SOL和弦可标为F9。但要注意的是,加四音和弦的写法有规定,要写sus4,并且要省去原和弦的三音,否则三音和四度音一起响会很尖锐。如DO,FA,SOL和弦标记为Csus4.(C和弦省三音加四度音)。加音以6,9,4度为多数。另外,有更复杂的理论把加音与多音和弦分开来,如FA,LA,DO,SOL和弦应标为Fadd9,而标为F9会被认为是FA,LA,DO,MI,SOL和弦。不过这只是理论而已,一般情况下用简单的加音标记法就可以让别人明白你的意思。

12、指定和弦根音:就是在演奏该和弦是,不弹它本身的根音而根据标记弹奏。如C/G,表示

演奏该和弦时把G音置于最低音。Dm/G表示演奏Dm时把G音置于最低音。也可以用On*表示同样意思,如F9OnD,实际演奏的是RE,FA,LA,DO,SOL。很明显,这种标记法可以用来表示和弦的转位。

第三章 各级和弦的功能

流行音乐中一般只讲大调的和弦而很少把小调单独作为一种调式重新定义和弦,因为流行音乐中关系大小调和弦共用的现象十分普遍,如果用经典和声学解释会颠来倒去搞不清。下面我们用C大调来举例。基本和弦共7个:C,Dm,Em,F,G,Am,Bdim.分别是1,2,3,4,5,6,7级和弦。1,4,5称正三和弦,2,3,6称副三和弦。7级和弦在流行音乐中极为少用。1级和弦也称主和弦,4级和弦也下属和弦,5级和弦也称属和弦,接下来是每个和弦的属性。

C:即1级和弦,是用来明确调性的。一般大调的歌曲都以它开始,也以它结束。不过在曲子的中间可以尽量少用主和弦,否则老是给人以终止感,乐曲的进行也会很硬。

Dm:即2级和弦,是一个很柔和的和弦,它的最重要用途就是放在属和弦即5级和弦之前。而5级和弦则自然要回到1级和弦,所以很容易就形成了2-5-1的进行。这是一个极其常用的进行。

Em:即3级和弦,也是一个十分柔和的和弦。音乐的进行中有了她马上就会变得柔美而略带忧伤。1-3-4的进行,也即在C大调中的C-Em-F是一个很常用的进行。乐曲中本来用1级和弦的地方有时可以考虑换成3级和弦,音乐立即就不强硬了。港台音乐中这种手法很常用。

F:即4级和弦,大调中的又一正三和弦,属于骨干和弦之一。它十分明亮,让人感觉心胸开阔,有一种一下子“飞”起来的感觉。我们听到的美国乡村乐和描写西部大草原和大峡谷的歌曲都使用4级和弦来表现。1级和弦后面跟4级与跟3级和弦是绝对不同的。

G:即5级和弦,大调中的第三个正三和弦,任何一首歌曲都不可缺少。它起着对主和弦支撑的作用。乐曲的终止感就是由5-1这样的进行产生的。当然现代流行音乐特别是欧美音乐中不使用5-1终止的歌曲也很多,这正是流行音乐的特色,但5级和弦作为音乐的骨架和弦仍然不可动摇。

Am:即6级和弦,一个中性的和弦,如果把它作为主和弦那就是小调了。歌曲肯定会变得忧郁,悲伤。如果6级和弦出现在大调中的某些部分,那它起到的就是连接不同和弦的作用。6级和弦象一座桥,它前面可以接几乎所有的和弦,后面也是如此。它可以是和弦的进行连贯,不呆板。1-6-4-5是极为常用的进行,事实上就用这四个和弦就可以写歌了。

Bdim:即7级和弦,在流行音乐中很少用。因为它是减三和弦,有一种向里收缩的紧张感,一般只在某些特定进行中使用,或是为了根音的流动而使用。

在了解了上述和弦的属性之后,大家就可以尝试为歌曲配和弦了。不过这是一个长期探索和实践的过程,能否配出基本正确的和弦不是寥寥文字可以教会的,也不是本教程的目标,我们的目标是配置出更好更优美的和弦,我们不该停留在对与不对的层次上。就我个人经验而说,如果你能做到以下几点,那你就向编曲大师跨出了关键一步:

1、能在一遍内听出歌曲的基本调内和弦(即1,2,3,4,5,6,7级和弦)

2、对歌曲常用的离调和弦比较敏感,一般也应当在1到2遍内分辨出其离调和弦。

3、看乐谱上的和弦可以想象出其音响效果,如果别人演奏错误,能马上察觉。

4、看一条单旋律,不用任何乐器,在心里能为它配和弦。

我们现在的流行音乐体系是纯西方的,旋律与和声地位同等重要。如果对和声不进行系统的研究,是难以制作出优秀的现代音乐作品的。

第四章 各级变化和弦

接下来我们要为歌曲配置更优美的和弦,使音乐更流畅。这就要用到各种变化和弦。关于变化和弦在经典和声学里有复杂的一套理论,这些理论是有实际意义的,但是对于那些没有系统学习过和声学的人来说,如果一开始就被灌输有关离调的系列理论,恐怕没有多少人可以正确理解。所有和弦转位都沿用传统名称,

1、第一转位称六和弦,第二转位称四六和弦:这是一个在古典音乐中很常用的和弦,但它在流行音乐中仍然有很重要的作用。它的形式是主和弦的第二转位,以C大调举例就是C/G和弦,即5-1-3和弦。这种和弦的特点是,虽然算是主和弦,但因为它以SOL为根音,所以一点也不稳定,有着极强的向属和弦去的倾向。试验一下,如果一首大调歌曲结束时贝司手不弹DO音而弹SOL音,你肯定会感觉很奇怪,你会觉得这首歌曲根本就没有结束。这充分体现了主四六和弦的不稳定性。因此在编曲时我们可以充分利用这一点,如果有一首歌曲的结尾是C-G7-C(这可是很常用的结尾哦)我们就可以改为C/G-G7-C。由于C/G(主四六和弦)倾向与属和弦G7,而属和弦G7又倾向于主和弦,这样从C/G开始一系列的和弦都顺着它的倾向性行进,音乐就变得流畅了。在古典音乐中,C/G-G7-C的进行是最经典的终止式。

2、二级六和弦:二级六和弦是二级和弦的第一转位,在C大调中是Dm/F。它的构成音是FA,LA,RE。大家会发现它与F和弦(四级和弦)只差一个音,前者是FA,LA,RE,后者是FA,LA,DO。所以,二级六和弦实际上可以看成是四级和弦的一个替代品,也就是说某些地方本来用的是四级和弦,现在就可以用二级六和弦代替,C大调中就是用Dm/F代替F和弦。二级六和弦保持了二级和弦柔和的特性,不象四级和弦那么硬,也没有强烈的“飞”起来的感觉,所以如果你想要使1-4级的进行不要那么强硬,但又要保证有1-4级进行的和声效果,你就可以用二级六和弦代替四级和弦。如果大家听过电影《红河谷》的主题曲,它的第二个和弦就是二级六和弦,而这个地方的和弦功能和听上去的感觉实际上是四级的,这就对了!这就是二级六和弦要达到的效果。

3、大二级和弦:这实际上是一个离调和弦,不过在这里我不从这个角度去说明问题。大二级和弦就是升高三音的二级和弦,在C大调里是2,#4,6和弦。它的特点就是强烈倾向于属和弦(五级和弦),也就是在C大调里构成D-G的进行。在前面介绍二级和弦时我曾提到二级和弦最重要的用途是置于5级和弦前面,所以我们可以这样认为大二级和弦是增强了小二级和弦向属和弦的倾向性。在C大调中就是用D-G7代替Dm-G7。在歌曲的适当位置使用这种代替手段效果是十分好的。但是要注意,歌曲的旋律音如果是FA(首调)则不能这样代替,因为这会构成与和弦#4的小二度冲突,十分尖锐刺耳。邓丽君的许多歌曲及那个年代的许多歌曲(如《今宵多珍重》)都会在属和弦前使用大二级和弦,大家可以去仔细地分辨一下。另外,和所有的离调和弦一样,大二级和弦也可以扩展成七和弦,C大调里是D7和弦,2,#4,6,1。它的和弦性质和D和弦是一样的,只不过音响更丰富些。

4、大三级和弦:这也是一个离调和弦。在C大调里是E和弦,3-#5-7。是由三级和弦Em升高三音形成。它倾向于六级和弦Am.也就是在C大调里构成E-Am的进行。它实际上也是Em到Am进行的强化。和前面一样,我们可以用E-Am代替Em到Am,但仍要注意,如果旋律音是SOL,就不能这样代替,因为SOL会与和弦里的#5冲突。有一首老歌叫《我家在那里》就使用了大三级和弦。有首圣诞歌曲就连续使用了大二级和弦和大三级和弦。另外,和所有的离调和弦一样,大三级和弦也可以扩展成七和弦,C大调里是E7和弦,3-#5-7-2。它的和弦性质和E和弦是一样的。

5、大六级和弦:这也是一个离调和弦。而且这是一个很常用的和弦,它的“离调感”十分远,所以能制造出很动听的效果。在C大调中是A或A7和弦(和其他离调和弦一样,它可以扩展成七和弦)它强烈倾向于二级Dm和弦,这样就在C大调中形成A(A7)-Dm的进行。这可是一个非常漂亮的进行,它不仅可以代替Am到Dm的进行,还可以代替其他和弦到Dm的进行。只要你的旋律中带有6,#1,3,5中的任何一个或多个音,你就可以使用这个进行。它是用来强调和声在音乐中作用的最好例子。看一下: 3 - 4 | 2 - - | 这个例子,如果你想在第二小节配置Dm和弦,那么前一小节用什么好呢?Am可以,Em也可以,但它们都不是最好的,试过用A(A7)吗?那将会是一种新鲜的感觉。这种和弦手法在流行音乐中被广泛应用,邓丽君的歌曲《爱的箴言》就使用了该和弦,著名的圣诞歌曲全曲多次使用该和弦。这个和弦十分有色彩,恰当的使用肯定可以使你配置的歌曲和弦及伴奏比原来丰富得多。当然仍旧要注意,不要在旋律音为DO时使用该和弦,因为它会与和弦的#1音冲突。

6、一级七和弦:这也是一个离调和弦。一级七和弦在C大调里就是C7和弦,1-3-5-b7,看清楚了,这是一个大小七和弦,是降SI而不是还原SI,在其他调里可不要搞错了。它的用处就是置于四级和弦前面,一级七和弦有强烈的倾向于四级和弦的特性,又由于它本身属于主和弦系列,所以如果我们使用了一级到四级的和弦进行,就可以在这两个和弦当中[已过滤词语]一个一级七和弦,形成C-C7-F的自然进行。有一首英文老歌就使用了该和弦。

7、小四级和弦:大调中,四级和弦应当是大三和弦,但有时侯我们也会使用它的降三音形式,就形成了小四级。它的最有效作用是置于四级和主和弦之间,也就是在C大调形成F-Fm-C的进行,小四级当然是一个小三和弦,它的加入会使音乐突然变得忧伤,所以它不但可以置于四级和主和弦之间,而且可以直接加在乐曲中的某个部分。著名的(雪绒花)在最后结尾时,就使用了小四级和弦。很多港台流行歌曲也使用小四级来表现忧伤与失落。

8、五级增三和弦:这个和弦不算很常用。它升高原来五级和弦的五音,变成增三和弦。在C大调中是Gaug(G+),这个和弦的用处是当一个乐句结束在属和弦上时,可以用五级增三和弦来代替五级和弦,增加意尤未尽的气氛,然后音乐稍作停留便又从主和弦开始,这种手段在爵士音乐中有着较多的应用。

9、降六级和弦:是一个常用的变化和弦,是大三和弦,在C大调中是bA和弦,b6-1-b3,降LA-DO-降MI。这个和弦看上去离C大调很远,确实如此,因为它只有一个音DO属于C大调自然音阶,嘻嘻,就是这个DO成为降六级最大的应用之处。因为绝大多数大调的歌曲都会结束在主音DO上(首调),我们可以利用降六级含有DO音,把降六级置于主和弦的前面,达到一种特殊的音响。在C大调中,如果本来是G7-C的终止,现在可以用G7-bA-C来替代,这样就能得到这样一种效果:旋律虽然保持是DO,但和弦是降六级-主和弦,非常有色彩。它可以烘托出那种宏伟,壮观的终止,不是属到主简单了事。

10、降七级和弦:相比降六级而言,降七级离原调好象近一点。在C大调中,降七级是bB和弦,b7-2-4,降SI-RE-FA,也是大三和弦。它含有RE,FA两个调内音,它可以被较自由地运用在歌曲中间部分,如果旋律中出现了这两个音就有可能使用降七级。在歌曲中如果在本来使用一般和弦的地方改用降七级,会有一种突然转调的感觉,降七级后面可以接1,4,5级和弦,C大调中,C-bB-C,C-bB-F等都是常见的。邓丽君的《千言万语》,The Beatles乐队的,, 都使用了降七级和弦,取得了很好的效果。降七级还有一个用处就是对降六级作进一步扩展,把bA-C扩展为bA-bB-C,也就是在降六级与主和弦之间再[已过滤词语]一个降七级,得到一个连续上行大三和弦的效果,更适合于那些气魄很大,雄壮而有震撼力的终止。

11、降三级和弦:这也是一个用得不算太多的变化和弦,在C大调里是bE和弦,b3-5-b7,降MI-SOL-降SI,也是大三和弦。它离C大调也比较远,只有SOL是调内音,因此只有旋律出现SOL时,它才有考虑的可能。它适合在乐曲中起丰富色彩的作用,使用一下以后马上又回原调。这种和弦就一定要用得好,用得到位而不能滥用。有一首著名的英文老?lt;Unchained Melody>(《奔放的旋律》--“人鬼情未了”的插曲)后半段就用了一个降三级。

第五章 和弦使用手段

1、保留根音:这种手法在很多流行音乐中有应用.它的意思是在一段和弦连接里,根音不按照正常和弦根音走动而是一直持续在一个音上保持不动,最常见的是保留主音.

具体点就是类似这样的连接:C---F/C---G/C---C,和弦原来的意思是1级到4级到5级,但根音却一直保持在C上,这种手法也削弱了原来和弦间强烈的对比,使它们能"粘合在一起",所以能给人以稳定,温馨的感觉,用在前奏,歌曲的A段比较合适。Bryan Adams的成名曲 一开始就用了这个手法,你可以仔细去听一下.在经典和声学中称这种手法为"主持续音".和声就是这样奇怪,也许你会说G/C的和弦,用C作G和弦的根音,难道就不会发生小二度冲突?所以说理论既是我们前进的领航员也是最大的束缚,当我们把一串和弦连起来后,你就会发现根本体会不到小二度的冲突。

2、延留音,先现音:和声的最大魅力在于"期待感",也就是当一个和弦出现时,我们就等着它应该走向的那个和弦的出现,做到与“心理听觉”相一致.延留音和先现音可以满足我的这种“僻好”。

我们先说延留音,它的意思就是把甲和弦中的某个音延续到接下来的乙和弦中,并且这个音不是乙和弦中的音。

例如这样的进行:F---Gsus4---G7---C,其中Gsus4和弦的构成是5,1,2三个音,而DO音是从F和弦延续下来的,它并不属于G和弦,由于它加入了G和弦中,使G和弦原来的属功能被削弱,DO音代替了原来SI应有的位置,但抢了别人的位置是一定要还给人家的,所以"期待感"在这里产生,听觉上我们等待着DO进行到SI去,于是后面一个G7的出现满足了我们的听觉需求,并且最终解决到主和弦上,得到完满的终止。这是最常见的延留音形式.我们可以自己创造出更多的可能,把某个和弦的某个音延续到后一和弦上,造成一种“迟到的解决”,很诱人的。

再来看一下先现音,它和延留音正好相反,就是在甲和弦中先出现了后一个乙和弦的某个音,而这个音并不属于甲和弦.当音乐进行到乙和弦的位置时,这个先现音成为了和弦音,音乐得到了解决.

比较有效果的办法是先现根音.如这样: F/G---G7---C,它原本的意思是4级--5级--1级的简单

进行,不过在4级和弦上它先出现了后一个5级和弦的根音--G,结果造成了一种很奇特的效果,使4级和弦也有了属功能,三个和弦的连接变得紧密了。

Spring的编程式事务和声明式事务

事务管理对于企业应用来说是至关重要的,当出现异常情况时,它也可以保证数据的一致性。

Spring事务管理的两种方式

spring支持编程式事务管理和声明式事务管理两种方式。

  • 编程式事务使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。
  • 声明式事务是建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。声明式事务最大的优点就是不需要通过编程的方式管理事务,这样就不需要在业务逻辑代码中掺杂事务管理的代码,只需在配置文件中做相关的事务规则声明(或通过基于@Transactional注解的方式),便可以将事务规则应用到业务逻辑中。

显然声明式事务管理要优于编程式事务管理,这正是spring倡导的非侵入式的开发方式。声明式事务管理使业务代码不受污染,一个普通的POJO对象,只要加上注解就可以获得完全的事务支持。和编程式事务相比,声明式事务唯一不足地方是,它的最细粒度只能作用到方法级别,无法做到像编程式事务那样可以作用到代码块级别。但是即便有这样的需求,也存在很多变通的方法,比如,可以将需要进行事务管理的代码块独立为方法等等。

声明式事务管理也有两种常用的方式,一种是基于tx和aop名字空间的xml配置文件,另一种就是基于@Transactional注解。显然基于注解的方式更简单易用,更清爽。

spring事务特性

spring所有的事务管理策略类都继承自org.springframework.transaction.PlatformTransactionManager接口。

其中TransactionDefinition接口定义以下特性:

事务隔离级别

隔离级别是指若干个并发的事务之间的隔离程度。TransactionDefinition 接口中定义了五个表示隔离级别的常量:

  • TransactionDefinition.ISOLATION_DEFAULT:这是默认值,表示使用底层数据库的默认隔离级别。对大部分数据库而言,通常这值就是TransactionDefinition.ISOLATION_READ_COMMITTED。
  • TransactionDefinition.ISOLATION_READ_UNCOMMITTED:该隔离级别表示一个事务可以读取另一个事务修改但还没有提交的数据。该级别不能防止脏读,不可重复读和幻读,因此很少使用该隔离级别。比如PostgreSQL实际上并没有此级别。
  • TransactionDefinition.ISOLATION_READ_COMMITTED:该隔离级别表示一个事务只能读取另一个事务已经提交的数据。该级别可以防止脏读,这也是大多数情况下的推荐值。
  • TransactionDefinition.ISOLATION_REPEATABLE_READ:该隔离级别表示一个事务在整个过程中可以多次重复执行某个查询,并且每次返回的记录都相同。该级别可以防止脏读和不可重复读。
  • TransactionDefinition.ISOLATION_SERIALIZABLE:所有的事务依次逐个执行,这样事务之间就完全不可能产生干扰,也就是说,该级别可以防止脏读、不可重复读以及幻读。但是这将严重影响程序的性能。通常情况下也不会用到该级别。

事务传播行为

所谓事务的传播行为是指,如果在开始当前事务之前,一个事务上下文已经存在,此时有若干选项可以指定一个事务性方法的执行行为。在TransactionDefinition定义中包括了如下几个表示传播行为的常量:

  • TransactionDefinition.PROPAGATION_REQUIRED:如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。这是默认值。
  • TransactionDefinition.PROPAGATION_REQUIRES_NEW:创建一个新的事务,如果当前存在事务,则把当前事务挂起。
  • TransactionDefinition.PROPAGATION_SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务的方式继续运行。
  • TransactionDefinition.PROPAGATION_NOT_SUPPORTED:以非事务方式运行,如果当前存在事务,则把当前事务挂起。
  • TransactionDefinition.PROPAGATION_NEVER:以非事务方式运行,如果当前存在事务,则抛出异常。
  • TransactionDefinition.PROPAGATION_MANDATORY:如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。
  • TransactionDefinition.PROPAGATION_NESTED:如果当前存在事务,则创建一个事务作为当前事务的嵌套事务来运行;如果当前没有事务,则该取值等价于TransactionDefinition.PROPAGATION_REQUIRED。

事务超时

所谓事务超时,就是指一个事务所允许执行的最长时间,如果超过该时间限制但事务还没有完成,则自动回滚事务。在 TransactionDefinition 中以 int 的值来表示超时时间,其单位是秒。

默认设置为底层事务系统的超时值,如果底层数据库事务系统没有设置超时值,那么就是none,没有超时限制。

spring事务回滚规则

默认配置下,spring只有在抛出的异常为运行时unchecked异常时才回滚该事务,也就是抛出的异常为RuntimeException的子类(Errors也会导致事务回滚),而抛出checked异常则不会导致事务回滚。可以明确的配置在抛出哪些异常时回滚事务,包括checked异常。也可以明确定义那些异常抛出时不回滚事务。还可以编程性的通过setRollbackOnly()方法来指示一个事务必须回滚,在调用完setRollbackOnly()后你所能执行的唯一操作就是回滚。

以MyBatis为例,基于注解的声明式事务配置

1、添加tx名字空间

xmlns:tx="http://www.springframework.org/schema/tx"

2、开启事务的注解支持

<!-- 开启事务控制的注解支持 -->  
<tx:annotation-driven transaction-manager="transactionManager"/>

3、MyBatis自动参与到spring事务管理中,无需额外配置,只要org.mybatis.spring.SqlSessionFactoryBean引用的数据源与DataSourceTransactionManager引用的数据源一致即可。

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource" />  
    <property name="configLocation">  
        <value>classpath:mybatis-config.xml</value>  
    </property>  
</bean> 

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
    <property name="dataSource" ref="dataSource" />  
</bean>  

**4、使用@Transactional注解**

@Transactional 可以作用于接口、接口方法、类以及类方法上。当作用于类上时,该类的所有 public 方法将都具有该类型的事务属性,同时,我们也可以在方法级别使用该注解来覆盖类级别的定义。

虽然 @Transactional 注解可以作用于接口、接口方法、类以及类方法上,但是 Spring 建议不要在接口或者接口方法上使用该注解,因为这只有在使用基于接口的代理时它才会生效。另外, @Transactional 注解应该只被应用到 public 方法上,这是由 Spring AOP 的本质决定的。如果你在 protected、private 或者默认可见性的方法上使用 @Transactional 注解,这将被忽略,也不会抛出任何异常。

以MyBatis为例,基于.xml文件的声明式事务配置

<tx:advice id="advice" transaction-manager="transactionManager">  
    <tx:attributes>  
        <tx:method name="update*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception"/>  
        <tx:method name="insert" propagation="REQUIRED" read-only="false"/>  
    </tx:attributes>  
</tx:advice>  
  
<aop:config>  
    <aop:pointcut id="testService" expression="execution (* com.nnngu.service.MyBatisService.*(..))"/>  
    <aop:advisor advice-ref="advice" pointcut-ref="testService"/>  
</aop:config>  

本文永久更新地址:https://github.com/nnngu/LearningNotes/blob/master/_posts/2018-03-22-Spring%E7%9A%84%E7%BC%96%E7%A8%8B%E5%BC%8F%E4%BA%8B%E5%8A%A1%E5%92%8C%E5%A3%B0%E6%98%8E%E5%BC%8F%E4%BA%8B%E5%8A%A1.md

以上是关于和声的基础知识的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins 基础知识

Jenkins 基础知识

零基础学音乐

JavaScript基础知识-快速入门篇

python基础----文件处理

python基础之文件处理