SpringMVC常用注解有哪些
admin
2023-01-22 22:22:29
0

【SpringMVC简介】

Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts 2(一般老项目使用)等等。

【SpringMVC常用注解】

@Controller

负责注册一个bean 到spring 上下文中

@RequestMapping

注解为控制器指定可以处理哪些 URL 请求

@RequestBody

该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上 ,再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上

@ResponseBody

该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区

@ModelAttribute

在方法定义上使用 @ModelAttribute 注解:Spring MVC 在调用目标处理方法前,会先逐个调用在方法级上标注了@ModelAttribute 的方法

在方法的入参前使用 @ModelAttribute 注解:可以从隐含对象中获取隐含的模型数据中获取对象,再将请求参数 –绑定到对象中,再传入入参将方法入参对象添加到模型中

@RequestParam

在处理方法入参处使用 @RequestParam 可以把请求参 数传递给请求方法

@PathVariable

绑定 URL 占位符到入参

@ExceptionHandler

注解到方法上,出现异常时会执行该方法

@ControllerAdvice

使一个Contoller成为全局的异常处理类,类中用@ExceptionHandler方法注解的方法可以处理所有Controller发生的异常

SpringMVC与Struts2区别比较】

A、spring mvc 和 struts2的加载机制不同:spring mvc的入口是servlet,而struts2是filter(servlet和filter区别见本文最后)

B、Struts2框架是类级别的拦截

C、SpringMVC是方法级别的拦截

【JPA注解

@Entity:表明这是一个实体类。

@MappedSuperClass:用在确定是父类的entity上。父类的属性子类可以继承。

@NoRepositoryBean:一般用作父类的repository,有这个注解,spring不会去实例化该repository。

@Column:如果字段名与列名相同,则可以省略。

@Id:表示该属性为主键。

@JoinColumn(name=”loginId”):一对一:本表中指向另一个表的外键。一对多:另一个表指向本表的外键。

@OneToOne、@OneToMany、@ManyToOne:对应hibernate配置文件中的一对一,一对多,多对一。

【全局异常注解】

@ControllerAdvice:包含@Component。可以被扫描到。统一处理异常。

@ExceptionHandler(Exception.class):用在方法上面表示遇到这个异常就执行以下方法。

项目中具体配置解析和使用环境注解

@MappedSuperclass:

1.@MappedSuperclass 注解使用在父类上面,是用来标识父类的

2.@MappedSuperclass 标识的类表示其不能映射到数据库表,因为其不是一个完整的实体类,但是它所拥有的属性能够映射在其子类对用的数据库表中

3.@MappedSuperclass 标识的类不能再有@Entity或@Table注解

@Column:

1.当实体的属性与其映射的数据库表的列不同名时需要使用@Column标注说明,该属性通常置于实体的属性声明语句之前,还可与 @Id 标注一起使用。

2.@Column 标注的常用属性是name,用于设置映射数据库表的列名。此外,该标注还包含其它多个属性,如:unique、nullable、length、precision等。

【执行持久化方法,按发生时间执行的回调函数】

@javax.persistence.PostLoad:加载后。

@javax.persistence.PrePersist:持久化前。

@javax.persistence.PostPersist:持久化后。

@javax.persistence.PreUpdate:更新前。

@javax.persistence.PostUpdate:更新后。

@javax.persistence.PreRemove:删除前。

@javax.persistence.PostRemove:删除后。

【数据库注解】

1)增

@PrePersist和@PostPersist事件在实体对象插入到数据库的过程中发生:

@PrePersist事件在调用persist()方法后立刻发生,此时的数据还没有真正插入进数据库。

@PostPersist事件在数据已经插入进数据库后发生。

2)删

@PreRemove和@PostRemove事件的触发由删除实体引起:

@PreRemove事件在实体从数据库删除之前触发,即在调用remove()方法删除时发生,此时的数据还没有真正从数据库中删除。

@PostRemove事件在实体从数据库中删除后触发。

3)改

@PreUpdate和@PostUpdate事件的触发由更新实体引起:

@PreUpdate事件在实体的状态同步到数据库之前触发,此时的数据还没有真正更新到数据库。

@PostUpdate事件在实体的状态同步到数据库之后触发,同步在事务提交时发生。

4)查

@PostLoad事件在下列情况下触发:

执行EntityManager.find()或getreference()方法载入一个实体后。

执行JPQL查询后。

EntityManager.refresh()方法被调用后。

相关内容

热门资讯

AI影视的胜负手,不止于工具 在今年的WAIC上,各大AI视频工具展现出了新的技术高度。智象未来发布了支持无限时长视频生成的创作智...
男子称未成年女儿在医院“打胎”... 江西省南昌市卫生健康委员会7月22日发布情况通报:近期,我委接到群众反映,新时代妇女儿童医院对未成年...
曝美军费即将见底,白宫紧急申请... 据凤凰卫视报道,美国与伊朗战火持续延烧,战争成本也快速攀升。《华盛顿邮报》披露,美国部分军事经费恐在...
西门子的洗衣机儿童锁怎么解锁 西门子的洗衣机儿童锁怎么解锁1、旋钮如果拧到停止档位后过来好长时间门还是打不开,可以将旋转钮再次拧到...
siemens洗衣机儿童锁解锁... 洗衣机右下角还有个应急开关,打开右下角排水泵外的塑料盖子,可以看见一根红色的塑料线,顺着拉线垂直的方...
空调遥控器如何使用-空调遥控器... 空调是家居生活必备的电器,而遥控器更是简化了操作流程。空调遥控器是用来远控空调的装置,在手动操作上更...
格力空调最省电的使用方法 以下是一些使用格力空调时可以省电的方法:1. 合理设置温度:根据实际需求和环境温度,将空调温度设定在...
洗衣机泡腾片怎么使用 洗衣机泡腾片怎么使用1、准备好泡腾片,把水放入洗衣机桶内,然后按照使用说明放入泡腾片的使用量。撕开泡...
隐藏近200亿元坏账?光大银行... 隐藏近200亿元坏账?光大银行回应  【隐藏近200亿元坏账?光大银行回应】2026年7月22日,今...
男子义乌打工失联,家属报案次日... 家住河北邯郸的吕平江,每天都在等浙江义乌警方的消息,他想知道儿子到底是什么原因永远离开了这个家。20...