千家信息网

SpringBoot注解(举一反三,发散思维)

发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,【前言】前些日子,咱们一起学习过Java里面的注解。今天呢,就学习一下Springboot注解,从框架的组成原理上一点点的熟悉这个框架。【Spring】提到SpringBoot那你就得先了解Sprin
千家信息网最后更新 2025年02月03日SpringBoot注解(举一反三,发散思维)

【前言】

前些日子,咱们一起学习过Java里面的注解。今天呢,就学习一下Springboot注解,从框架的组成原理上一点点的熟悉这个框架。

【Spring】

提到SpringBoot那你就得先了解Spring是什么?因为SpringBoot是一个简化Spring开发的框架。

A、Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架;

控制反转--Spring通过一种称作控制反转(IoC)的技术促进了松耦合

面向切面--Spring提供了面向切面编程的丰富支持

B、Spring的Web模块;

Web上下文模块建立于应用上下文模块之上,提供了一个适合于Web应用的上下文。另外,这个模块还提供了一些面向服务支持。例如:实现文件上传的multipart请求,它也提供了Spring和其它Web框架的集成,比如Struts、WebWork。

C、Spring的MVC框架;

Spring为构建Web应用提供了一个功能全面的MVC框架。虽然Spring可以很容易地与其它MVC框架集成,例如Struts,但Spring的MVC框架使用IoC对控制逻辑和业务对象提供了完全的分离。

它也允许你声明性地将请求参数绑定到你的业务对象中,此外,Spring的MVC框架还可以利用Spring的任何其它服务,例如国际化信息与验证。

********

【Springmvc架构原理解析】

第一步:发起请求到前端控制器(DispatcherServlet)

第二步:前端控制器请求HandlerMapping查找 Handler可以根据xml配置、注解进行查找

第三步:处理器映射器HandlerMapping向前端控制器返回Handler

第四步:前端控制器调用处理器适配器去执行Handler

第五步:处理器适配器去执行Handler

第六步:Handler执行完成给适配器返回ModelAndView

第七步:处理器适配器向前端控制器返回ModelAndView

ModelAndView是springmvc框架的一个底层对象,包括 Model和view

第八步:前端控制器请求视图解析器去进行视图解析

根据逻辑视图名解析成真正的视图(jsp)

第九步:视图解析器向前端控制器返回View

第十步:前端控制器进行视图渲染

视图渲染将模型数据(在ModelAndView对象中)填充到request域

第十一步:前端控制器向用户响应结果

组件:

①、前端控制器DispatcherServlet(不需要程序员开发)作用接收请求,响应结果,相当于转发器,中央处理器。有了DispatcherServlet减少了其它组件之间的耦合度。

②、处理器映射器HandlerMapping(不需要程序员开发)作用:根据请求的url查找Handler

3、处理器适配器HandlerAdapter作用:按照特定规则(HandlerAdapter要求的规则)去执行Handler

③、处理器Handler(需要程序员开发)注意:编写Handler时按照HandlerAdapter的要求去做,这样适配器才可以去正确执行Handler

④、视图解析器View resolver(不需要程序员开发)作用:进行视图解析,根据逻辑视图名解析成真正的视图(view)

⑤、视图View(需要程序员开发jsp)View是一个接口,实现类支持不同的View类型(jsp、freemarker、pdf…)

*******

【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()方法被调用后。












数据 方法 注解 控制 数据库 对象 处理 实体 框架 控制器 事件 前端 视图 处理器 属性 适配器 开发 适配 程序 程序员 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 杨浦区即时网络技术产品 惠普服务器介绍 威海联想服务器总代理哪家好 济宁销售软件开发公司电话 计算机网络技术教师招聘笔试 战地1租用服务器 国科大数据库新技术考试题 杨浦区创新软件开发常见问题 t3数据库不存在怎么办 数据库技术主要特点是什么 福建软件开发解决方案定制 软件开发考二建还是计算机安全 国家网络安全四川中心曾佐兵 叶文平网络安全周 坚守品质与安全新华三服务器 如何用代码创建数据库表格 计算机网络技术考试方面 网络安全人工智能应用 软件开发设计经常存在的问题 数据库的重命名怎么写 软件开发各类人员有哪些 网络安全自学 上海铭新网络技术有限公司 战地1租用服务器 广州农行软件开发工资 服务器的管理口登录不上 网络技术基础视频教程 摄像头otp软件开发 金山区综合网络技术代理商 常德求职软件开发
0