金三银四-探秘Spring框架:挑战你对Java企业级开发的深度理解-基础篇1

        又要快到一年一度的金三银四,开始复习啦~!

        每天一点点。。

目录

一、Spring框架中的Bean生命周期是什么?

二、Spring中的依赖注入是如何工作的?

三、Spring框架中AOP的概念

四、Spring框架中的事务管理是如何实现的?

五、Spring MVC流程。

六、Spring Boot与Spring有什么区别?

七、Spring Cloud与Spring Boot有什么关系?

八、Spring Security中的认证和授权机制是如何工作的?

九、Spring中Bean的作用域有哪些?

十、Spring框架中的IoC(控制反转)是什么意思?

十一、Spring Data JPA的工作原理。

十二、Spring Boot中的自动配置是如何实现的?

十三、Spring Cloud中的服务发现和注册机制。

十四、Spring中的事件和事件监听器是如何工作的?

十五、Spring框架中的事务传播行为有哪些?

十六、Spring框架中如何实现国际化(i18n)?

十七、Spring中,如何通过JdbcTemplate操作数据库?

十八、Spring Cloud Config是如何工作的?


一、Spring框架中的Bean生命周期是什么?

Spring框架中的Bean生命周期包含以下关键步骤:

  1、实例化Bean: 首先创建Bean的实例。

  2、设置属性值: Spring框架通过反射机制注入属性。

  3、调用BeanNameAware的setBeanName(): 如果Bean实现了BeanNameAware接口,Spring将Bean的ID传给setBeanName()方法。

  4、调用BeanFactoryAware的setBeanFactory(): 如果Bean实现了BeanFactoryAware接口,Spring将调用setBeanFactory()方法,将BeanFactory容器实例传入。

  5、调用ApplicationContextAware的setApplicationContext(): 如果Bean实现了ApplicationContextAware接口,此方法将被调用,传入当前的ApplicationContext。

  6、BeanPostProcessor的前置处理: BeforeInitialization方法被调用。

  7、调用InitializingBean的afterPropertiesSet(): 如果Bean实现了InitializingBean接口,Spring将调用其afterPropertiesSet()方法。

  8、定义的init方法: 如果Bean定义了init方法,该方法将被调用。

  9、BeanPostProcessor的后置处理: AfterInitialization方法被调用。

  10、Bean的使用: 此时,Bean已准备就绪,可以被应用程序使用。

  11、调用DisposableBean的destroy(): 如果Bean实现了DisposableBean接口,当容器关闭时,destroy()方法将被调用。

  12、定义的destroy方法: 如果Bean定义了destroy方法,该方法将被调用。

        

二、Spring中的依赖注入是如何工作的?

  1、通过构造器注入: Spring通过类的构造器参数注入依赖。

  2、通过Setter方法注入: 依赖可以通过Bean的Setter方法被注入。

  3、基于注解的注入: 使用注解(如@Autowired)直接在属性、构造器或方法上注入依赖。

  4、XML文件注入: 在Spring的XML配置文件中定义Bean及其依赖。

这种机制减少了代码间的耦合度,使得组件更易于测试和维护。

        

三、Spring框架中AOP的概念

AOP(面向切面编程)在Spring框架中用于增强面向对象编程,其核心概念包括:

  1、切面(Aspect): 横切关注点的模块化,比如日志、安全等。

  2、连接点(Join Point): 程序执行过程中的某个特定点,如方法调用或异常抛出。

  3、通知(Advice): 在切面的某个特定连接点上执行的动作。

  4、切点(Pointcut): 匹配连接点的表达式。

  5、引入(Introduction): 向现有类添加新方法或属性。

  6、目标对象(Target Object): 被一个或多个切面通知的对象。

  7、织入(Weaving): 把切面与其他应用类型或对象连接起来,创建一个被通知的对象。

这些概念共同工作,为Spring应用提供强大的编程方式以处理共性问题。

        

四、Spring框架中的事务管理是如何实现的?

Spring框架通过以下机制实现事务管理:

  1、声明式事务管理: 使用注解或XML配置来管理事务,是最常用的方式。

  2、编程式事务管理: 使用编程的方式直接管理事务,给予开发者更大的控制,但不如声明式事务简洁。

  3、事务传播行为: Spring定义了多种事务传播行为,如REQUIRED、REQUIRES_NEW等,控制事务的创建和嵌套方式。

  4、事务隔离级别: Spring支持多种事务隔离级别,帮助解决事务中常见的问题,如脏读、不可重复读、幻读等。

  5、回滚规则: Spring允许自定义事务回滚的规则。

这些特性使得Spring在事务管理方面非常灵活和强大。

        

五、Spring MVC流程。

Spring MVC框架的流程主要包括以下步骤:

  1、请求到达DispatcherServlet: 所有请求首先到达中央控制器DispatcherServlet。

  2、请求映射: DispatcherServlet调用HandlerMapping确定请求的处理器。

  3、调用处理器: 处理器接收请求并返回ModelAndView对象。

  4、视图解析: DispatcherServlet调用ViewResolver来解析Handler返回的视图。

  5、返回响应: 视图负责渲染并返回给客户端。

Spring MVC通过这种流程提供了一个灵活、解耦的方式来开发Web应用。

        

六、Spring Boot与Spring有什么区别?

Spring Boot是基于Spring的框架,旨在简化Spring应用的初始搭建及开发过程。主要区别包括:

  1、自动配置: Spring Boot自动配置项目,简化了配置过程。

  2、独立运行: Spring Boot应用可以独立运行,不需要外部Servlet容器。

  3、内嵌服务器: 提供内嵌的Tomcat、Jetty或Undertow服务器。

  4、无需XML配置: Spring Boot减少了对XML配置的依赖,更多使用注解和Java配置。

  5、微服务支持: 为构建微服务提供了强大的支持。

        

七、Spring Cloud与Spring Boot有什么关系?

Spring Cloud是一系列框架的集合,用于构建微服务应用。与Spring Boot的关系如下:

  1、基于Spring Boot: Spring Cloud建立在Spring Boot的基础上,利用其特性来简化分布式系统开发。

  2、微服务工具集: Spring Cloud为微服务架构提供了一整套的解决方案,如服务发现、配置管理、消息路由等。

  3、依赖管理: Spring Cloud依赖Spring Boot来管理各种依赖的版本。

  4、增强的分布式系统支持: 通过Spring Cloud,Spring Boot应用可以更容易地构建为分布式系统的一部分。

Spring Cloud与Spring Boot共同提供了一个全面且一致的开发体验,用于构建现代的、可伸缩的微服务应用。

        

八、Spring Security中的认证和授权机制是如何工作的?

Spring Security提供了全面的安全服务,其认证和授权机制包括:

  1、认证过程: 认证是确认用户身份的过程。Spring Security支持多种认证方式,如表单登录、LDAP、OAuth2等。

  2、授权过程: 授权是决定用户是否有权执行特定操作的过程。Spring Security通过角色和权限来控制访问。

  3、Security Filter Chain: 请求经过一系列的安全过滤器,每个过滤器负责不同的安全检查。

  4、UserDetailsService接口: 用于根据用户名获取用户的详细信息。

  5、PasswordEncoder接口: 用于密码的加密和匹配。

通过这些机制,Spring Security确保了应用的安全性。

        

九、Spring中Bean的作用域有哪些?

Spring框架中,Bean可以有不同的作用域,主要包括:

  1、Singleton: 默认作用域,每个Spring容器中只有一个Bean实例。

  2、Prototype: 每次请求都会创建一个新的Bean实例。

  3、Request: 在一次HTTP请求中,每个Bean都是一个新的实例。

  4、Session: 在一个HTTP会话中,每个Bean都是一个新的实例。

  5、GlobalSession: 在全局HTTP会话中,每个Bean都是一个新的实例,主要用于Portlet应用。

  6、Application: 在ServletContext生命周期内,Bean为单例。

  7、WebSocket: 在WebSocket生命周期内,Bean为单例。

这些作用域提供了在不同情况下使用Bean的灵活性。

        

十、Spring框架中的IoC(控制反转)是什么意思?

IoC(控制反转)是Spring框架的核心概念,它指的是:

  1、控制权转移: 将对象创建和管理的控制权从程序代码转移给框架。

  2、依赖注入: IoC的一种实现方式,Spring框架通过依赖注入将组件彼此连接起来。

  3、减少耦合: IoC使得代码之间的耦合度降低,提高了代码的可测试性和可维护性。

        

十一、Spring Data JPA的工作原理。

Spring Data JPA简化了数据访问层的开发,其工作原理包括:

  1、Repository接口: 开发者只需定义接口,Spring Data JPA会自动实现。

  2、查询方法命名解析: 通过方法名解析查询逻辑。

  3、实体管理: 自动处理实体类到数据库表的映射。

  4、事务管理: 提供声明式事务管理。

  5、集成Hibernate: 可与Hibernate等ORM框架无缝集成。

这样,Spring Data JPA为开发者提供了一个强大且易用的数据访问层。

        

十二、Spring Boot中的自动配置是如何实现的?

Spring Boot的自动配置通过以下机制实现:

  1、@EnableAutoConfiguration注解: Spring Boot应用加上此注解来启用自动配置。

  2、条件注解: 如@ConditionalOnClass、@ConditionalOnMissingBean等,根据环境条件决定是否进行自动配置。

  3、配置类: 提供默认的配置,如果用户没有定义自己的配置,则使用这些默认值。

  4、外部配置: 通过application.properties或application.yml文件提供的配置。

这些机制使得在Spring Boot中配置项目变得简单快捷。

        

十三、Spring Cloud中的服务发现和注册机制。

服务发现和注册是Spring Cloud微服务架构中的关键组成部分,工作原理如下:

  1、服务注册: 微服务启动时,将自己的信息注册到服务注册中心。

  2、服务发现: 应用通过服务注册中心来查找需要调用的服务的位置。

  3、负载均衡: 在客户端实现负载均衡,选择一个合适的服务实例进行调用。

  4、常见实现: 如Eureka、Consul和Zookeeper等。

这种机制允许微服务实例动态注册和发现,增加了系统的弹性和可伸缩性。

        

十四、Spring中的事件和事件监听器是如何工作的?

Spring框架的事件和事件监听器机制包括:

  1、事件(Event): 继承自ApplicationEvent的类,代表应用中发生的事件。

  2、事件发布: 通过ApplicationEventPublisher发布事件。

  3、事件监听器(EventListener): 实现ApplicationListener接口或使用@EventListener注解,用于处理特定类型的事件。

  4、异步处理: 可以通过@Async注解使事件监听器异步处理事件。

这种机制使得应用组件间的通信更加灵活和解耦。

        

十五、Spring框架中的事务传播行为有哪些?

Spring框架定义了多种事务传播行为,主要包括:

  1、REQUIRED: 如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。

  2、SUPPORTS: 如果当前存在事务,则加入该事务;如果没有,则以非事务方式执行。

  3、MANDATORY: 如果当前存在事务,则加入该事务;如果没有,则抛出异常。

  4、REQUIRES_NEW: 总是创建一个新的事务,如果当前存在事务,则挂起当前事务。

  5、NOT_SUPPORTED: 总是非事务地执行,如果当前存在事务,则挂起当前事务。

  6、NEVER: 总是非事务地执行,如果当前存在事务,则抛出异常。

  7、NESTED: 如果当前存在事务,则在嵌套事务内执行;如果没有,则行为同REQUIRED。

这些行为为事务管理提供了灵活性,适应不同的业务场景。

        

十六、Spring框架中如何实现国际化(i18n)?

Spring框架实现国际化的主要步骤包括:

  1、定义消息资源: 创建属性文件,存储不同语言环境下的消息。

  2、配置MessageSource: 在Spring配置文件中配置MessageSource,指定消息资源的基础名(basename)。

  3、使用MessageSource: 使用ApplicationContext或MessageSource接口获取国际化消息。

  4、Locale解析: 通过LocaleResolver解析用户的Locale。

  5、在应用中使用国际化消息: 在代码或模板中使用Spring的消息解析功能展示国际化内容。

        

十七、Spring中,如何通过JdbcTemplate操作数据库?

使用JdbcTemplate操作数据库的步骤如下:

  1、配置DataSource: 提供数据库的连接信息。

  2、创建JdbcTemplate实例: 将DataSource注入到JdbcTemplate。

  3、执行数据库操作: 使用JdbcTemplate提供的方法执行SQL查询或更新,如query、update等。

  4、处理结果集: 使用RowMapper或ResultSetExtractor处理查询结果。

JdbcTemplate简化了JDBC操作,使数据库交互更加方便和安全。

        

十八、Spring Cloud Config是如何工作的?

  Spring Cloud Config 是一个用于集中式配置管理的开源项目。它允许您将应用程序的配置信息集中存储在一个远程仓库中,以便在不同环境和微服务中共享和管理配置。

Spring Cloud Config 的工作流程如下:

  1. 配置仓库:您需要选择一个适合您的项目的配置存储仓库,比如 Git、Subversion、Vault 等。您可以将配置文件存储在仓库的不同分支或路径中,以便在不同环境中加载不同的配置。

  2. 配置服务端:您需要设置一个 Spring Cloud Config 服务端,它会通过客户端发送的请求从配置仓库中获取配置信息。您可以使用配置文件或注解的方式配置服务端。

  3. 配置客户端:您的应用程序需要引入 Spring Cloud Config 的客户端依赖,并在配置文件中指定配置服务端的地址。客户端会在启动时通过 HTTP 请求获取配置信息,并将其应用到应用程序中。

  4. 配置刷新:一旦配置服务端中的配置发生变化,客户端可以通过 POST 请求刷新配置,从而使应用程序重新加载最新的配置信息。您可以使用 @RefreshScope 注解来标记需要刷新的组件。

通过 Spring Cloud Config,您可以实现以下功能:

  • 集中式配置管理:将应用程序的配置信息集中存储在统一的仓库中,方便管理和维护。
  • 动态配置更新:配置发生变化时,无需重新部署应用程序,客户端可以获取最新的配置并进行动态更新。
  • 多环境支持:可以为不同的环境(如开发、测试、生产)配置不同的配置文件,使得应用程序在不同环境中表现一致。

这就是 Spring Cloud Config 的基本工作原理和功能。通过它,您可以更好地管理和配置您的微服务应用程序。

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

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

相关文章

[Mac软件] iShot Pro 2.4.6 for Mac强大的截图标注工具激活版

iShot是Mac上一款免费优秀、功能全面的录屏、区域截图、窗口截图、长截图、延时截图、快速标注、贴图工具。 功能介绍 区域截图、窗口截图、快捷键截图智能识别窗口,自动倒圆角、可自定义快捷键快速截图长截图、滚动截图选择滚动截图区域,然后按“S”快…

Docker安装配置OnlyOffice

OnlyOffice 是一款强大的办公套件,你可以通过 Docker 轻松安装和部署它。本文将指导你完成安装过程。 步骤 1:拉取 OnlyOffice Docker 镜像 首先,使用以下命令从 Docker Hub 拉取 OnlyOffice Document Server 镜像: sudo docke…

计算机毕业设计 基于MVC的自习室管理和预约系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

如何用数据赋能社媒营销决策?

在数字化时代,越来越多的商家开始意识到数据分析对于改善经营的重要性。 传统决策更多依赖过往经验、商业直觉、他人的思路模板等方法,或者依靠描述性统计、简单的数据分析。在数字时代,则通过精细化数据分析,做出更明智的营销决策…

LLM包含的知识

基础知识 磨刀不误砍柴工,LLM基础知识还是需要的。会按照历史梳理LM,详解BERT、GPT系列等各种预备核心知识点,并带着进行GPT预训练实战、位置编码(长文本问题)实战等。 数据工程 数据很重要,数据是天花板…

java基础07-final、finally和finalize的区别是什么?

1.final用于声明属性、方法和类,分别表示属性不可改变(常量),方法不可覆盖,类不可继承。 2.finally是异常处理语句结构的一部分,表示总是执行。 3. finalize是java.lang.Object类的一个方法,在垃…

华为网络设备常用命令大全

♥️作者:小刘在C站 ♥️个人主页: 小刘主页 ♥️不能因为人生的道路坎坷,就使自己的身躯变得弯曲;不能因为生活的历程漫长,就使求索的 脚步迟缓。 ♥️学习两年总结出的运维经验,以及思科模拟器全套网络实验教程。专栏:云计算技…

在docker中配置 Linux ls 配色方案 与 shell 提示符

发行版中默认的配置一般非常合理,但是docker中往往忽略了这些简单的配置,备忘一下 1. ls 配色方案 vim ~/.bashrc 在文件最末尾加入如下一行内容: export LS_COLORS"rs0:di01;34:ln01;36:mh00:pi40;33:so01;35:do01;35:bd40…

如何避免 QT 的 View/Model 模式产生消息激活的死循环?

1. 收到 QTableWidget 的 itemChanged 信号,关联的槽函数一般做什么工作? 当收到QTableWidget的itemChanged信号时,关联的槽函数一般用于响应单元格数据的修改。它可以执行以下一些常见的工作: 更新数据:槽函数可以获…

Rsync数据远程同步全备-增量备份

rsync是Linux系统下的数据镜像备份工具 使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。 它的特性如下: • 可以镜像保存整个目录树和文件系统。 • 可以很容易做到保持原来文件的权限、时间、软…

基于供水管网建模的漏损控制

1.1供水管网模型的概念和管网建模目的 供水管网系统是比较特殊的城市基础设施,不可见且属于压力管道。随着运行年限的增长,管道的过水能力和水泵的运行工况都发生了变化,管道的改扩建也使管网系统的结构发生了变化,导致系统运行状…

WPF-HelixToolkit包的使用(上)

1、引入HelixToolkit包:新建一个WPF项目,在项目“引用”上右击,选择“管理NutGet程序包”, 2、在左侧“浏览”中输入“helixtoolkit” 3、安装第一个“HelixToolkit”包 4、解决错误:右击属性->应用程序->目标框…

Unity -简单键鼠事件和虚拟轴

简单键鼠事件 — “Test_03” KeyTest 键鼠事件每帧都要监听,要放在Update()中处理 public class KeyTest : MonoBehaviour {// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){// 【鼠标点击事件…

银河麒麟桌面桌面操作系统v10保姆级安装

目录 一、下载ISO映像文件 1.产品试用申请 2.试用版下载 二、虚拟机搭建 1.新建虚拟机 2. 选择虚拟机硬件兼容性 3.选择安装客户机操作系统 4.选择客户机操作系统 5.命名虚拟机 6.处理器配置 7.虚拟机内存 8.网络类型 9.硬件 10.指定磁盘容量 三、修改虚拟…

STM32 Hal库FreeRtos查看所有任务的内存栈信息使用情况剩余空间 仅需一个函数搞定 超简单

STM32F103 基于Hal库跑FreeRtos,查看所有任务的栈的信息,包括任务名,任务状态,任务优先级,空闲栈,任务号。 运行结果如下 只需要使用一个函数vTaskList :获得任务的统计信息,形式为…

echart3D地图使用

由于项目需求,需要实现3D全国地图,并且在3D地图上通过3D柱状图显示各个区域的数据,并鼠标悬浮该区域的时候,需要实现该省份区域模块整体向上移动的特效 实现效果大致如下,细节需要各位同学自行调整了 需要安装echart…

03--数据库连接池

1、数据库连接池 1.1 JDBC数据库连接池的必要性 在使用开发基于数据库的web程序时,传统的模式基本是按以下步骤: 在主程序(如servlet、beans)中建立数据库连接进行sql操作断开数据库连接 这种模式开发,存在的问题:…

Flink Kubernetes Operator 介绍

一、简介 Flink Kubernetes Operator是针对在Kubernetes上运行Apache Flink应用程序而设计的工具。它充分利用了Kubernetes的优势,实现了对Flink集群的弹性管理和自动化操作,通过扩展Kubernetes API的方式,提供了管理和操作Flink部署的功能。…

【Qt】—— Qt的基本介绍

目录 (一)什么是Qt (二) Qt的发展史 (三)Qt⽀持的平台 (四) Qt版本 (五)Qt的优点 (六)Qt的应⽤场景 (七&#xff09…

5G_射频测试_测试模式解读(三)

Downlink test models FR1 test model 1.1 (NR-FR1-TM1.1)(满PRB,QPSK)FR1 test model 1.2 (NR-FR1-TM1.2)( QPSK/boosted/40% QPSK)FR1 test model 2 (NR-FR1-TM2)(64QAM 只有1个PRB 功率最低)FR1 test model 2a (NR-FR1-TM2a) )(256QAM 只…