5Spring及Spring系列-进阶

8.1spring进阶

 spring常用注解

1.@Component
它是这些注解里面最普通的一个注解,一般用于把普通pojo实例化到spring容器中。
@Controller和@Service和@Repository是它的特殊情况,当一个类不需要进行这几种特殊归类的时候,只是作为一个普通的类,被Spring管理就OK的时候,比较适合采用@Component注解。
原理:将普通JavaBean实例化到spring容器中,Spring容器统一管理,用起来不用自己new了,相当于配置文件中的< bean id=“” class=“”/>

2.@Controller    属于SpringMvc
用于标注控制层,表示向控制层注入服务层的数据

3.@Service
用于标注服务层,来进行业务的逻辑处理,在服务层注入DAO层数据

4.@Repository
用于标注数据访问层,也可以说用于标注数据访问组件,即DAO组件

5.@ComponentScan
(这个注解长得和@Component有点像,但是他们是完全两个不同类型的注解,@Component像一个标签,标志着你这类是个啥,而@ComponentScan像一个路标,告诉你去哪找东西)

应用场景:在定义spring中的bean的时候,一般有两步
1.在bean上面添加@Controller/@Service/@Repository/@Component这几个注解,标注这个类是个bean
2.然后还需要让Spring能够找到这个bean,这时候就需要使用到@ComponentScan这个注解了

使用:@ComponentScan(“com.demo”) 引号里面是要扫描的包路径

SpringBoot中的使用:
在SpringBoot中也许不会经常看到这个注解,因为@SpringBootApplication这个注解里面集成了@ComponentScan注解,它里面会自动扫描这个类所在包以及子包下面的bean。
所以如果我们要找的bean不在它的所在包或者子包里面,就需要自己再添加一个@ComponentScan注解。例如:
@ComponentScan({“com.demo.springboot”,”com.demo.somethingelse”})

6.@ResponseBody
加了这个注解的类会将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML。

9.@AutoWired

这个注解的英文直译是“自动装配”,“自动注入”

它就像一根水管一样,两端接上水桶,然后就可以把一个桶里面的水自动注入到另一个桶中。

这两端的桶,可以是 类成员变量/方法/构造函数

中间流的水,可以是 数组/集合/Map/父类属性

Spring中常用注解及其作用_spring注解及其作用-CSDN博客Spring中常用注解及其作用1.@Component它是这些注解里面最普通的一个注解,一般用于把普通pojo实例化到spring容器中。@Controller和@Service和@Repository是它的特殊情况,当一个类不需要进行这几种特殊归类的时候,只是作为一个普通的类,被Spring管理就OK的时候,比较适合采用@Component注解。原理:将普通JavaBean实例化到spring容器中,Spring容器统一管理,用起来不用自己new了,相当于配置文件中的< bean id=""_spring注解及其作用https://blog.csdn.net/m0_48038376/article/details/108343497

springMvc常用注解

一.@Controller:

二.@RequestMapping:

(1)GetMapping

(2)PostMapping

三.@RequestParam:

四.@PathVariable:

五.@ModelAttribute:

六.@ResponseBody:

七.@ResponseStatus:

八.@SessionAttributes:

九.@InitBinder:

十.@ExceptionHandler:
SpringMVC常用注解_暮雨倦柳的博客-CSDN博客本篇文章主要介绍了一些常用注解。_springmvc常用注解https://blog.csdn.net/NameBy/article/details/131449837

springBoot常用注解 

启动类注解

在springboot中,经常会用到一些注解,它们各自代表着什么呢?在这个属于我们的节日里,快来了解一下吧! 

1、@SpringBootApplication

     一般不会主动去使用它,但是要知道它是一个组合注解,@Configuration  、@EnableAutoConfiguration 、@ComponentScan  注解的集合。

2、@Configuration 

      这是 Spring 3.0 添加的一个注解,用来代替 applicationContext.xml 配置文件,所有这个配置文件里面能做到的事情都可以通过这个注解所在类来进行注册。用@Configuration注释类表明是一个配置类,允许在 Spring 上下文中注册额外的 bean 或导入其他配置类。

3、@EnableAutoConfiguration

      该注解就是用来开启自动配置的,一般情况下也是需要去配置的,后续会更新。

4、@ComponentScan

      @ComponentScan用于类或接口上主要是指定扫描路径,spring会把指定路径下带有指定注解的类自动装配到bean容器里。会被自动装配的注解包括@Controller、 @Service、@Component、@Repository等等。其作用等同于<context:component-scan base-package="com.xxx.xxx" />配置。这是 Spring 3.1 添加的一个注解,用来代替配置文件中的 component-scan 配置,开启组件扫描,即自动扫描包路径下的 @Component 注解进行注册 bean 实例到 context 中。

这几个注解一般会在启动类里边配置,如下图。

5、@Autowired、@Qualifier

@Autowired注解作用在构造函数、方法、方法参数、类字段以及注解上
@Autowired注解可以实现Bean的自动注入
当有多个同一类型的Bean时,可以用@Qualifier(“name”)来指定。与@Autowired配合使用。
 

springboot常用注解详解_spring boot注解-CSDN博客本文讲了springboot中常用的注解。_spring boot注解https://blog.csdn.net/m0_64818669/article/details/127491630

springCloud常用注解及组件

SPRINGCLOUD五大组件及相关注解整理_springcloud 各组件注解-CSDN博客三、Hystrix与Feign的结合使用a.使用中的一些常用注解前面几篇文章主要是单个介绍某些组件在Springcloud中的使用,下面我们来使用feign与Hystrix组合的方式来完成微服务之间的调用以及服务出现问题时的熔断降级!1)eureka服务注解@SpringBootApplication@EnableEurekaServer2)服务提供端注解@SpringBootApplication@EnableEurekaClient@EnableDiscoveryClient3)_springcloud 各组件注解https://blog.csdn.net/ZZJST/article/details/107342642

参考

Spring系列之Spring(Boot/Cloud)常用注解(最全面)_springcloud注解大全_johnny233的博客-CSDN博客Spring:主要有Spring Bean与Spring Web MVC,及其他等3类注解。Spring Boot:Spring Cloud:_springcloud注解大全https://blog.csdn.net/lonelymanontheway/article/details/119855296

 spring,springMvc,springBoot,SpringCloud

一、概念
1、Spring  不提供表现层支持

Spring是一个开源容器框架,可以接管web层,业务层,dao层,持久层的组件,并且可以配置各种bean,和维护bean与bean之间的关系。其核心就是控制反转(IOC),和面向切面(AOP),是一个分层的轻量级开源框架。


2、SpringMVC   需要web服务器例如tomcat  提供表现层支持

Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。SpringMVC是一种web层mvc框架,用于替代servlet(处理请求,获取表单参数,表单校验等),SpringMVC是一个MVC的开源框架,springMVC相当于Struts2 + Spring。


3、SpringBoot   内置服务器tomcat   更专注于开发微服务后台接口

Springboot是一个微服务框架,延续了spring框架的核心思想IOC和AOP,Spring Boot简化了Spring应用的创建、运行、调试、部署等,使用开发者可以专注于Spring应用的开发,而无需过多关注XML的配置。
 

Spring、SpringMVC和SpringBoot的关系_spring springboot springmvc的关系-CSDN博客一、概念1、Spring Spring是一个开源容器框架,可以接管web层,业务层,dao层,持久层的组件,并且可以配置各种bean,和维护bean与bean之间的关系。其核心就是控制反转(IOC),和面向切面(AOP),简单的说就是一个分层的轻量级开源框架。 2、SpringMVC Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。SpringMVC是一种web层mvc框架,用于替代servlet(处理|响应请求,获取表单参数,表单校_spring springboot springmvc的关系https://blog.csdn.net/qq_47183158/article/details/123066684

spring和springMvc:
  1. spring是一个一站式的轻量级的java开发框架,核心是控制反转(IOC)和面向切面(AOP),针对于开发的WEB层(springMvc)、业务层(Ioc)、持久层(jdbcTemplate)等都提供了多种配置解决方案;
  2. springMvc是spring基础之上的一个MVC框架,主要处理web开发的路径映射和视图渲染,属于spring框架中WEB层开发的一部分;
springMvc和springBoot:
  1. springMvc属于一个企业WEB开发的MVC框架,涵盖面包括前端视图开发、文件配置、后台接口逻辑开发等,XML、config等配置相对比较繁琐复杂;
  2. springBoot框架相对于springMvc框架来说,更专注于开发微服务后台接口,不开发前端视图,同时遵循默认优于配置,简化了插件配置流程,不需要配置xml,相对springmvc,大大简化了配置流程;

springBoot和springCloud:

  1. spring boot使用了默认大于配置的理念,集成了快速开发的spring多个插件,同时自动过滤不需要配置的多余的插件,简化了项目的开发配置流程,一定程度上取消xml配置,是一套快速配置开发的脚手架,能快速开发单个微服务;
    也叫约定大于配置
  2. spring cloud大部分的功能插件都是基于springBoot去实现的,springCloud关注于全局的微服务整合和管理,将多个springBoot单体微服务进行整合以及管理; springCloud依赖于springBoot开发,而springBoot可以独立开发;
    总结:
  3. Spring 框架就像一个家族,有众多衍生产品例如 boot、security、jpa等等。但他们的基础都是Spring的ioc、aop等. ioc 提供了依赖注入的容器, aop解决了面向横切面编程,然后在此两者的基础上实现了其他延伸产品的高级功能;
  4. springMvc是基于Servlet 的一个MVC框架主要解决WEB开发的问题,因为Spring的配置非常复杂,各种XML、JavaConfig、servlet处理起来比较繁琐;
  5. 为了简化开发者的使用,从而创造性地推出了springBoot框架,默认优于配置,简化了springMvc的配置流程;
    但区别于springMvc的是,springBoot专注于微服务方面的接口开发,和前端解耦,虽然springBoot也可以做成springMvc前后台一起开发,但是这就有点不符合springBoot框架的初衷了;
  6. 对于springCloud框架来说,它和springBoot一样,注重的是微服务的开发,但是springCloud更关注的是全局微服务的整合和管理,相当于管理多个springBoot框架的单体微服务

8.1.1进阶

*spring 事务实现方式有哪些?
声明式事务:声明式事务也有两种实现方式,基于 xml 配置文件的方式和注解方式(在类上添加 @Transaction 注解)。
编码方式:提供编码的形式管理和维护事务。
*说一下 spring mvc 运行流程?
spring mvc 先将请求发送给 DispatcherServlet。
DispatcherServlet 查询一个或多个 HandlerMapping,找到处理请求的 Controller。
DispatcherServlet 再把请求提交到对应的 Controller。
Controller 进行业务逻辑处理后,会返回一个ModelAndView。
Dispathcher 查询一个或多个 ViewResolver 视图解析器,找到 ModelAndView 对象指定的视图对象。
视图对象负责渲染返回给客户端。
*spring mvc 有哪些组件?
前置控制器 DispatcherServlet。
映射控制器 HandlerMapping。
处理器 Controller。
模型和视图 ModelAndView。
视图解析器 ViewResolver。
*@RequestMapping 的作用是什么,有哪些属性?
将 http 请求映射到相应的类/方法上。
RequestMapping接口的源码如下,里面定义了八个属性(Spring4.3.8)。
注:SpringMVC在4.1版本对RequestMapping属性做了相应调整,去掉了path属性。
*@Autowired 的作用是什么?
@Autowired 它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作,通过@Autowired 的使用来消除 set/get 方法。
#spring 支持几种 bean 的作用域?
spring 支持 5 种作用域,如下:
singleton:spring ioc 容器中只存在一个 bean 实例,bean 以单例模式存在,是系统默认值;
prototype:每次从容器调用 bean 时都会创建一个新的示例,既每次 getBean()相当于执行 new Bean()操作;
Web 环境下的作用域:
request:每次 http 请求都会创建一个 bean;
session:同一个 http session 共享一个 bean 实例;
global-session:用于 portlet 容器,因为每个 portlet 有单独的 session,globalsession 提供一个全局性的 http session。
注意: 使用 prototype 作用域需要慎重的思考,因为频繁创建和销毁 bean 会带来很大的性能开销。
*spring 自动装配 bean 有哪些方式?
no:默认值,表示没有自动装配,应使用显式 bean 引用进行装配。
byName:它根据 bean 的名称注入对象依赖项。
byType:它根据类型注入对象依赖项。
构造函数:通过构造函数来注入依赖项,需要设置大量的参数。
autodetect:容器首先通过构造函数使用 autowire 装配,如果不能,则通过 byType 自动装配。
spring 中的 bean 是线程安全的吗?
spring 中的 bean 默认是单例模式,spring 框架并没有对单例 bean 进行多线程的封装处理。实际上大部分时候 spring bean 无状态的(比如 dao 类),所有某种程度上来说 bean 也是安全的,但如果 bean 有状态的话(比如 view model 对象),那就要开发者自己去保证线程安全了,最简单的就是改变 bean 的作用域,把“singleton”变更为“prototype”,这样请求 bean 相当于 new Bean()了,所以就可以保证线程安全了。
有状态就是有数据存储功能。
无状态就是不会保存数据。
*说一下 spring 的事务隔离?五大  对比mysql的acid
spring 有五大隔离级别,默认值为 ISOLATION_DEFAULT(使用数据库的设置),其他四个隔离级别和数据库的隔离级别一致:
spring 有五大隔离级别
isolation_default:用底层数据库的设置隔离级别,数据库设置的是什么我就用什么;
isolationreadumconmmitted:未提交读,最低隔离级别、事务未提交前,就可被其他事务读取(会出现幻读、脏读、不可重复读);
isolationreadconmmitted:提交读,一个事务提交后才能被其他事务读取到(会造成幻读、不可重复读),SQL server 的默认级别;
isolationrepeatableead:可重复读,保证多次读取同一个数据时,其值都和事务开始时候的内容是一致,禁止读取到别的事务未提交的数据(会造成幻读),MySQL 的默认级别;
ISOLATION_SERIALIZABLE:序列化,代价最高最可靠的隔离级别,该隔离级别能防止脏读、不可重复读、幻读。MySQL隔离级别
可能出现的事务问题
脏读 :表示一个事务能够读取另一个事务中还未提交的数据。比如,某个事务尝试插入记录 A,此时该事务还未提交,然后另一个事务尝试读取到了记录 A。
不可重复读 :是指在一个事务内,多次读同一数据。
幻读 :指同一个事务内多次查询返回的结果集不一样。比如同一个事务 A 第一次查询时候有 n 条记录,但是第二次同等条件下查询却有 n+1 条记录,这就好像产生了幻觉。发生幻读的原因也是另外一个事务新增或者删除或者修改了第一个事务结果集里面的数据,同一个记录的数据内容被修改了,所有数据行的记录就变多或者变少了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/132097.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在SIP 语音呼叫中出现单通时要怎么解决?

在VoIP的环境中&#xff0c;特别是基于SIP通信的环境中&#xff0c;我们经常会遇到一些非常常见的问题&#xff0c;例如&#xff0c;单通&#xff0c;注册问题&#xff0c;回声&#xff0c;单通等。这些问题事实上都有非常直接的排查方式和解决办法&#xff0c;用户可以按照一定…

json库的基本使用

目录 1 将python变量转变为json变量 dumps() 2 将json变量转换为python变量 loads() 3 将键值对存储为json文件 dump() 4 读取json文件 前后端常用json进行信息的交互&#xff0c;不转json会有收不到的情况 我们先看一下转换成json的服务 发现该有的信息都有&#x…

分类预测 | MATLAB实现KOA-CNN-GRU开普勒算法优化卷积门控循环单元数据分类预测

分类预测 | MATLAB实现KOA-CNN-GRU开普勒算法优化卷积门控循环单元数据分类预测 目录 分类预测 | MATLAB实现KOA-CNN-GRU开普勒算法优化卷积门控循环单元数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.MATLAB实现KOA-CNN-GRU开普勒算法优化卷积门控循环单…

安装Docker

安装Docker 1.卸载旧版 首先如果系统中已经存在旧的Docker&#xff0c;则先卸载&#xff1a; yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine2.配置Docker的yum库 首先…

浅谈智能型电动机控制器在斯里兰卡电厂中的应用

摘要&#xff1a;传统的低压电动机保护是通过继电保护二次回路实现&#xff0c;但是我们结合电厂辅助控制设备的特点及其控制要求&#xff0c;推荐ARD2F智能型电动机控制器。以下综合介绍ARD2F智能型电动机控制器产品的特点及其智能化保护、测量、控制和通讯等。 Abstract: Th…

作战仿真试验理论体系研究

源自&#xff1a;装甲兵工程学院学报 作者&#xff1a;徐享忠&#xff0c;杨建东&#xff0c;郭齐胜 “人工智能技术与咨询” 发布 摘 要 建立了作战仿真试验的概念框架&#xff0c;以预测论、作战仿真理论和试验理论为基础理论&#xff0c;以仿真试验目标、仿真试验模式…

VSCODE+PHP8.2配置踩坑记录

VSCODEPHP8.2配置踩坑记录 – WhiteNights Site 我配置过的最恶心的环境之一&#xff1a;windows上的php。另一个是我centos服务器上的php。 进不了断点 端口配置和xdebug的安装 这个应该是最常见的问题了。从网上下载完php并解压到本地&#xff0c;打开vscode&#xff0c;安装…

PanoFlow:学习360°用于周围时间理解的光流

1.摘要&#xff1a; 光流估计是自动驾驶和机器人系统中的一项基本任务&#xff0c;它能够在时间上解释交通场景。自动驾驶汽车显然受益于360提供的超宽视野&#xff08;FoV&#xff09;◦ 全景传感器。 然而&#xff0c;由于全景相机独特的成像过程&#xff0c;为针孔图像设计…

邮件营销主题怎样撰写效果好

邮件营销主题是向订阅者提供有关公司、产品或服务的新消息和信息。邮件营销主题可以包括促销、折扣、新产品、优惠活动等。邮件营销主题可以吸引订阅者打开邮件&#xff0c;了解公司的新消息&#xff0c;从而增加公司的品牌知名度和销售额。在选择邮件营销主题时&#xff0c;需…

高级网络调试技巧:使用Charles Proxy捕获和修改HTTP/HTTPS请求

今天我将与大家分享一种强大的网络调试技巧&#xff0c;那就是使用Charles Proxy来捕获和修改HTTP/HTTPS请求。如果您是一位开发人员或者网络调试爱好者&#xff0c;那么这个工具肯定对您有着很大的帮助。接下来&#xff0c;让我们一起来学习如何使用Charles Proxy进行高级网络…

安道亮相深圳国际全触与显示展,展示最新商显研发成果!

10月11日&#xff0c;2023深圳国际全触与显示展在深圳举行&#xff0c;安道及晟沃携最新智能交互一体机、会议配件等最新商显产品亮相&#xff0c;现场真实智能会议场景&#xff0c;全面展现安道在智慧终端方面的卓越研发实力和创新应用能力&#xff0c;吸引了众多观众前来展台…

东芝Z750的画质真实吗?适合看纪录片吗?

东芝Z750显示的画面更加真实、细腻、有层次感,就感觉电视中的画面像真实世界一般呈现在眼前,东芝电视拥有70余年的原色调校技术,每款产品都有专属的日本调校工程师匠心打造,可以真实还原画面色彩,若是观看类似《航拍中国》这样的旅游记录片时,东芝电视将会营造出万里山河的壮阔…