spring默认值注解(Spring之Transactional注解)

:暂无数据 2026-07-14 08:40:01 :0

spring默认值注解(Spring之Transactional注解)

其实spring默认值注解的问题并不复杂,但是又很多的朋友都不太了解Spring之Transactional注解,因此呢,今天小编就来为大家分享spring默认值注解的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

本文目录

Spring之Transactional注解

该注解的签名如下:

定义零(0)个或多个异常类,这些异常类必须是Throwable的子类,指示哪些异常类型必须导致事务回滚。
默认情况下,事务将在RuntimeException和Error上回滚,但不会在检查型异常(业务异常)上回滚。具体可以看DefaultTransactionAttribute.rollbackOn(Throwable)方法,有比较详细的解释。
这是构造回滚规则(与 rollbackForClassName比较)的首选方法,它匹配异常类及其子类。

定义零(0)个或多个异常名称(对于必须是Throwable子类的异常),指示哪些异常类型必须导致事务回滚。
这可以是完全限定类名的子字符串,目前不支持通配符。例如,“ServletException”的值将与ServletException及其子类匹配。

定义零(0)个或多个异常类,这些异常类必须是Throwable的子类,指示哪些异常类型不能导致事务回滚。
这是构造回滚规则(与noRollbackForClassName相比)的首选方法,它匹配异常类及其子类。

一个布尔标志,如果事务实际上是只读的,则可以将其设置为true,从而允许在运行时进行相应的优化。
默认为false。
这只是作为实际事务子系统的提示;它不一定会导致写入访问尝试失败。无法解释只读提示的事务管理器在请求只读事务时不会引发异常,而是默默地忽略该提示。

此事务的超时时间(秒)。
默认为基础事务系统的默认超时。为Propagation.REQUIRED和Propagation.REQUIRES_NEW设计的参数,因为它只适用于新启动的事务。默认值为-1,表示不设置超时时间。

此事务的超时时间(秒)。
默认为基础事务系统的默认超时。
专门设计用于Propagation.REQUIRED和Propagation.REQUIRES_NEW,因为它只适用于新启动的事务。

事务隔离级别。
默认为Isolation.DEFAULT.
专门为Propagation.REQUIRED 和 Propagation.REQUIRES_NEW设计使用的,因为它只适用于新启动的事务。如果您希望隔离级别声明在参与具有不同隔离级别的现有事务时被拒绝,请考虑在事务管理器上切换“验证有效事务”标志为“true”。

事务传播类型。
默认为 Propagation.REQUIRED.

定义零(0)个或多个事务标签。标签可用于描述事务 ,并可由单个事务管理器进行评估。标签可能仅用于描述目的,或映射到预定义的事务管理器特定选项。
请参阅实际事务管理器实现的描述,了解它如何评估事务标签。

指定事务的限定符值。
可用于确定目标事务管理器,与特定TransactionManager bean定义的限定符值(或bean名称)匹配。

propagation的取值定义成了一个枚举类,如下所示:

REQUIRED
其值为0,支持当前事务,如果不存在,则创建新事务。类似于同名的EJB事务属性。这是事务注解的默认设置。

SUPPORTS
其值为1,支持当前事务,如果不存在,则以非事务方式执行。类似于同名的EJB事务属性。
注意:对于具有事务同步的事务管理器,SUPPORTS 与完全没有事务略有不同,因为它定义了同步将应用的事务范围。因此,相同的资源(JDBC连接、Hibernate会话等)将在整个指定范围内共享。请注意,这取决于事务管理器的实际同步配置。

MANDATORY
支持当前事务,如果不存在则抛出异常。类似于同名的EJB事务属性。

REQUIRES_NEW
创建新事务,并暂停当前事务(如果存在)。类似于同名的EJB事务属性。
注意:实际的事务暂停不会在所有交易管理器上立即生效。这尤其适用于JtaTransactionManager。JtaTransactionManager,它需要TransactionManager 可供其使用(在标准Java EE中是特定于服务器的)。

NOT_SUPPORTED
以非事务方式执行,如果当前事务存在,则暂停当前事务。类似于同名的EJB事务属性。
注意:实际的事务暂停不会在所有事务管理器上立即生效。这尤其适用于JtaTransactionManager。JtaTransactionManager,它需要TransactionManager可供其使用(在标准Java EE中是特定于服务器的)。

NEVER
以非事务方式执行,如果存在事务,则抛出异常。类似于同名的EJB事务属性。

NESTED
如果存在当前事务,则在嵌套事务中执行,否则按要求执行。EJB中没有类似的特性。
注意:嵌套事务的实际创建只适用于特定的事务管理器。开箱即用,这只适用于JDBC DataSourceTransactionManager。一些JTA提供者可能也支持嵌套事务。

枚举,用来表示Transactional 注解的事务隔离级别,与TransactionDefinition 接口定义的事务隔离级别相一致。
枚举定义如下:

DEFAULT
使用基础数据存储的默认隔离级别。所有其他级别都对应于JDBC隔离级别。

READ_UNCOMMITTED
一个常数,指示可能发生脏读、不可重复读和幻象读。此级别允许一个事务更改的行在提交该行的任何更改之前被另一个事务读取(“脏读”)。如果回滚了任何更改,则第二个事务将检索到无效行。

READ_COMMITTED
指示防止脏读的常数;可能会发生不可重复读取和幻象读取。此级别仅禁止事务读取包含未提交更改的行。

REPEATABLE_READ
指示防止脏读和不可重复读的常数;可能会发生幻象读取。该级别禁止事务读取包含未提交更改的行,还禁止一个事务读取一行,第二个事务更改该行,第一个事务重新读取该行,第二次获得不同的值(“不可重复读取”)。

SERIALIZABLE
一个常数,指示防止脏读、不可重复读和幻象读。该级别包括隔离可重复读取的禁止,并进一步禁止一个事务读取满足where条件的所有行,第二个事务插入满足where条件的行,第一个事务重新读取相同条件,在第二次读取中检索附加的“幻影”行。

springboot的@Value注解的使用

1.使用 @Value("${...}") 方式:

可以获取属性文件中对应的值(如果属性文件中没有这个属性,则会报错。可以通过赋予默认值解决这个问题,如@Value("${attr:127.0.0.1}"))

2.使用 @Value("#{...}")方式:

3.在@Value(...)中 ${…}和#{…}混合使用

注意必须#{}外面, {}是时机要早于#{}

application.properties属性文件:

***隐藏网址***

Springboot实战系列之@Value注解的使用心得

在工作中使用springboot经常有属性注入的场景,下面说一下有默认值和无默认值两种写法的不同

这中是有默认值的写法,默认是分号后的值,这里为true,但是如果在配置文件中(application.properties 或 application.yml)中设置了appCenterRegistered的值,就会按照配置文件中的值。
如在application.properties中设置
app.center.registered:false
这样appCenterRegistered的值会为false

demo

这种是无默认值的写法,这种写法要求必须在配置文件(applicaiton.properties或application.yal)中添加该属性的键值对,否则就会报错
Could not resolve placeholder ’app.center.registered’ in value "${app.center.registered}

springmvc的注解有哪些优点全局异常配置默认

spring mvc常用的注解:
个介绍。
@Controller
@Controller 负责注册一个bean 到spring 上下文中,bean 的ID 默认为
类名称开头字母小写,你也可以自己指定,如下
方法一:
@Controller
public class TestController {}
方法二:
@Controller("tmpController")
public class TestController {}
@RequestMapping
1.@RequestMapping用来定义访问的URL,你可以为整个类定义一个
@RequestMapping,或者为每个方法指定一个。
把@RequestMapping放在类级别上,这可令它与方法级别上的
@RequestMapping注解协同工作,取得缩小选择范围的效果。
例如:
@RequestMapping("/test")
public class TestController {}
则,该类下的所有访问路径都在/test之下。
2.将@RequestMapping用于整个类不是必须的,如果没有配置,所有的方法
的访问路径配置将是完全独立的,没有任何关联。
3.完整的参数项为:@RequestMapping(value="",method =
{"",""},headers={},params={"",""}),各参数说明如下:
value :String 设置访问地址
method: RequestMethod设置访问方式,字符数组,查看RequestMethod
类,包括GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE,常用
RequestMethod.GET,RequestMethod.POST
headers:String headers一般结合method = RequestMethod.POST使用
params: String 访问参数设置,字符数组 例如:userId=id
4.value的配置还可以采用模版变量的形式 ,例如:@RequestMapping
(value="/owners/{ownerId}", method=RequestMethod.GET),这点将在介
绍@PathVariable中详细说明。
5.@RequestMapping params的补充说明,你可以通过设置参数条件来限制
访问地址,例如params="myParam=myValue"表达式,访问地址中参数只有
包含了该规定的值"myParam=myValue"才能匹配得上,类似"myParam"之类
的表达式也是支持的,表示当前请求的地址必须有该参数(参数的值可以是
任意),"!myParam"之类的表达式表明当前请求的地址不能包含具体指定的
参数"myParam"。
6.有一点需要注意的,如果为类定义了访问地址为*.do,*.html之类的,则
在方法级的@RequestMapping,不能再定义value值,否则会报错,例如
Java代码
@RequestMapping("/bbs.do")
public class BbsController {
@RequestMapping(params = "method=getList")
public String getList() {
return "list";
}
@RequestMapping(value= "/spList")
public String getSpecialList() {
return "splist";
}
}
如上例:/bbs.do?method=getList 可以访问到方法getList() ;而访
问/bbs.do/spList则会报错.
@PathVariable
1.@PathVariable用于方法中的参数,表示方法参数绑定到地址URL的模板
变量。
例如:
Java代码
@RequestMapping(value="/owners/{ownerId}",
method=RequestMethod.GET)
public String findOwner(@PathVariable String ownerId, Model
model) {
Owner owner = ownerService.findOwner(ownerId);
model.addAttribute("owner", owner);
return "displayOwner";
}
2.@PathVariable用于地址栏使用{xxx}模版变量时使用。
如果@RequestMapping没有定义类似"/{ownerId}" ,这种变量,则使用在
方法中@PathVariable会报错。
@ModelAttribute
1.应用于方法参数,参数可以在页面直接获取,相当于
request.setAttribute(,)
2.应用于方法,将任何一个拥有返回值的方法标注上 @ModelAttribute,使
其返回值将会进入到模型对象的属性列表中.
3.应用于方法参数时@ModelAttribute("xx"),须关联到Object的数据类型
,基本数据类型 如:int,String不起作用
例如:
Java代码
@ModelAttribute("items")//《——①向模型对象中添加一个名为items的
属性
public List populateItems() {
List lists = new ArrayList();
lists.add("item1");
lists.add("item2");
return lists;
}
@RequestMapping(params = "method=listAllBoard")
public String listAllBoard(@ModelAttribute("currUser")User user,
ModelMap model) {
bbtForumService.getAllBoard();
//《——②在此访问模型中的items属性
System.out.println("model.items:" + ((List)
model.get("items")).size());
return "listBoard";
}
在 ① 处,通过使用 @ModelAttribute 注解,populateItem() 方法将在
任何请求处理方法执行前调用,Spring MVC 会将该方法返回值以“items
”为名放入到隐含的模型对象属性列表中。
所以在 ② 处,我们就可以通过 ModelMap 入参访问到 items 属性,当执
行 listAllBoard() 请求处理方法时,② 处将在控制台打印
出“model.items:2”的信息。当然我们也可以在请求的视图中访问到模型
对象中的 items 属性。
@ResponseBody
这个注解可以直接放在方法上,表示返回类型将会直接作为HTTP响应字节
流输出(不被放置在Model,也不被拦截为视图页面名称)。可以用于ajax。
@RequestParam
@RequestParam是一个可选参数,例如:@RequestParam("id") 注解,所以
它将和URL所带参数 id进行绑定
如果入参是基本数据类型(如 int、long、float 等),URL 请求参数中
一定要有对应的参数,否则将抛出
org.springframework.web.util.NestedServletException 异常,提示无
法将 null 转换为基本数据类型.
@RequestParam包含3个配置 @RequestParam(required = ,value="",
defaultValue = "")
required :参数是否必须,boolean类型,可选项,默认为true
value: 传递的参数名称,String类型,可选项,如果有值,对应到设置方
法的参数
defaultValue:String类型,参数没有传递时为参数默认指定的值
@SessionAttributes session管理
Spring 允许我们有选择地指定 ModelMap 中的哪些属性需要转存到
session 中,以便下一个请求属对应的 ModelMap 的属性列表中还能访问
到这些属性。这一功能是通过类定义处标注 @SessionAttributes 注解来
实现的。@SessionAttributes 只能声明在类上,而不能声明在方法上。
例如
@SessionAttributes("currUser") // 将ModelMap 中属性名为currUser 的属性
@SessionAttributes({"attr1","attr2"})
@SessionAttributes(types = User.class)
@SessionAttributes(types = {User.class,Dept.class})
@SessionAttributes(types = {User.class,Dept.class},value={"attr1","attr2"})
@CookieValue 获取cookie信息
@RequestHeader 获取请求的头部信息

请教关于spring的注解方式注入默认值

1.是首字母小写 比如 UserAction对应的id是userAction
可以通过
ApplicationContext 对象的act.getBean("userAction");获取
注入是
2.如果多个实现类(一个写不写无所谓)
@Resource(name = "userServiceImpl1")
private UserService service;
这样的形式指定你要的实现类,name为spring中bean的id

如果你还想了解更多这方面的信息,记得收藏关注本站。

spring默认值注解(Spring之Transactional注解)

本文编辑:admin

更多文章:


withdrawal(withdrawal是什么意思)

withdrawal(withdrawal是什么意思)

今天给各位分享withdrawal是什么意思的知识,其中也会对withdrawal是什么意思进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年10月11日 07:00

根据流程图怎么编写程序(用c语言根据流程图写程序)

根据流程图怎么编写程序(用c语言根据流程图写程序)

大家好,今天小编来为大家解答以下的问题,关于根据流程图怎么编写程序,用c语言根据流程图写程序这个很多人还不知道,现在让我们一起来看看吧!

2026年10月11日 06:00

在from子句中可以出现(如何在from 子句中嵌套查询下面的语句在access中出错!)

在from子句中可以出现(如何在from 子句中嵌套查询下面的语句在access中出错!)

大家好,关于在from子句中可以出现很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于如何在from 子句中嵌套查询下面的语句在access中出错!的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望

2026年10月11日 05:20

countif函数统计个数怎么用(countif函数怎么用 详解Excel中countif函数的使用方法)

countif函数统计个数怎么用(countif函数怎么用 详解Excel中countif函数的使用方法)

其实countif函数统计个数怎么用的问题并不复杂,但是又很多的朋友都不太了解countif函数怎么用 详解Excel中countif函数的使用方法,因此呢,今天小编就来为大家分享countif函数统计个数怎么用的一些知识,希望可以帮助到大

2026年10月11日 03:30

正则匹配数字之前的字符(正则表达式如何匹配前面是数字、中间是“/”、后面也是数字,就像2/3专业的模式)

正则匹配数字之前的字符(正则表达式如何匹配前面是数字、中间是“/”、后面也是数字,就像2/3专业的模式)

本篇文章给大家谈谈正则匹配数字之前的字符,以及正则表达式如何匹配前面是数字、中间是“/”、后面也是数字,就像2/3专业的模式对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问

2026年10月11日 03:00

register语言学(register语言学)

register语言学(register语言学)

“register语言学”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看register语言学(register语言学)!

2026年10月11日 01:40

系统架构设计师可以直接考吗(学生可以报名系统架构设计师吗)

系统架构设计师可以直接考吗(学生可以报名系统架构设计师吗)

“系统架构设计师可以直接考吗”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看系统架构设计师可以直接考吗(学生可以报名系统架构设计师吗)!

2026年10月11日 01:00

orlnsertbootmediinselected(我电脑开机显示这个是什么意思or insert boot media in select)

orlnsertbootmediinselected(我电脑开机显示这个是什么意思or insert boot media in select)

大家好,如果您还对orlnsertbootmediinselected不太了解,没有关系,今天就由本站为大家分享orlnsertbootmediinselected的知识,包括我电脑开机显示这个是什么意思or insert boot med

2026年10月10日 23:00

display的用法(display是什么意思 详解display的含义和用法)

display的用法(display是什么意思 详解display的含义和用法)

大家好,如果您还对display的用法不太了解,没有关系,今天就由本站为大家分享display的用法的知识,包括display是什么意思 详解display的含义和用法的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年10月10日 22:00

html全部居中代码(怎么让网页居中显示,html如何让网页居中)

html全部居中代码(怎么让网页居中显示,html如何让网页居中)

大家好,今天小编来为大家解答以下的问题,关于html全部居中代码,怎么让网页居中显示,html如何让网页居中这个很多人还不知道,现在让我们一起来看看吧!

2026年10月10日 21:10

最近更新

戴尔vostro3500评测(戴尔:Vostro15 3500与Ins15 3511区别)
2026-10-11 09:10:02 浏览:0
西数5000aakx(西数WD-5000AAKX-001CAO和西数800AAJS-00WAAO哪个做安装系统盘比较好)
2026-10-11 08:30:05 浏览:0
热门文章

标签列表