目录
1、Spring框架有哪些设计模式?
2、介绍一下Spring框架和SpringBoot框架?
3、介绍一下SpringBoot具有哪些功能模块?
4、Spring用到了什么组件?
5、什么是IoC? 什么是AOP?
6、SpringBoot运行原理?
7、对于SpringBoot和SpringMVC的理解?
1、Spring框架有哪些设计模式?
1.单例模式:
单例模式是一种创建型设计模式,它保证一个类只有一个实例,并提供了一个全局访问点。在 Spring 中,Bean 默认是单例的,这意味着每个 Bean 只会被创建一次,并且可以在整个应用程序中共享
2.工厂模式:
它提供了一种创建对象的方式,使得应用程序可以更加灵活和可维护。Spring 提供了多种工厂模式,如 BeanFactory 和 ApplicationContext 等,通过这些工厂可以创建和管理对象的实例。
3.代理模式:
代理模式是一种结构型设计模式,它允许开发人员在不修改原有代码的情况下,向应用程序中添加新的功能。在 Spring AOP(面向切面编程)就是使用代理模式的实现,它允许开发人员在方法调用前后执行一些自定义的操作,比如日志记录、性能监控等
4.观察者模式:
Spring 事件机制就是基于观察者模式实现的,通过事件源和监听器来实现对象之间的解耦。
5.适配器模式:
适配器模式是一种结构型设计模式,它允许开发人员将一个类的接口转换成另一个类的接口,以满足客户端的需求。在 Spring 中,适配器模式常用于将不同类型的对象转换成统一的接口。
2、介绍一下Spring框架和SpringBoot框架?
Spring
Spring 是一个轻量级的开源框架,它提供了一种简单的方式来构建企业级应用程序。Spring 框架的核心是 IoC 和 AOP 两个概念。
IoC 是一种设计模式,它将对象的创建和依赖关系的管理从应用程序代码中分离出来,使得应用程序更加灵活和可维护。
AOP 是一种编程范式,它允许开发人员在不修改原有代码的情况下,向应用程序中添加新的功能。
Spring 框架提供了很多模块,包括核心容器、数据访问、Web、AOP、消息、测试等。开发人员可以根据自己的需求选择合适的模块来构建应用程序。
Spring Boot
Spring Boot 本质上是 Spring 框架的延伸和扩展,它的诞生是为了简化 Spring 框架初始搭建以及开发的过程,使用它可以不再依赖 Spring 应用程序中的 XML 配置,为更快、更高效的开发 Spring 提供更加有力的支持。 Spring Boot 也提供了很多特性,包括自动配置、嵌入式 Web 服务器、健康检查、度量指标、安全性等。开发人员可以通过使用 Spring Boot Starter 来快速集成常用的第三方库和框架,比如 Spring Data、Spring Security、MyBatis、Redis 等
Spring Boot 是一个基于 Spring 框架的快速开发框架,它有以下优点:
- 快速集成框架,Spring Boot 提供了启动添加依赖的功能,⽤于秒级集成各种框架。
- 内置运⾏容器,⽆需配置 Tomcat 等 Web 容器,直接运⾏和部署程序。
- 快速部署项⽬,⽆需外部容器即可启动并运⾏项⽬。
- 可以完全抛弃繁琐的 XML,使⽤注解和配置的⽅式进⾏开发。
- ⽀持更多的监控的指标,可以更好的了解项⽬的运⾏情况。
- SpringBoot的核心:
1、快速添加依赖
2、内置web容器
3、自动装配(即SpringBoot自动构建复杂对象,构建好的对象可以直接使用)
Spring Boot 项⽬的⼀大特点:约定⼤于配置。较于Spring需要配置Bean的扫描路径,而SpringBoot就不需要
3、介绍一下SpringBoot具有哪些功能模块?
-
自动配置模块:自动配置根据项目中引入的依赖和应用程序的环境自动配置Spring应用程序。它大大减少了繁琐的配置过程。
-
起步依赖模块:Spring Boot提供了许多预配置的起步依赖,可以轻松添加常用的功能模块。例如,你可以通过添加
spring-boot-starter-web
起步依赖来快速构建Web应用程序。 -
嵌入式Web服务器模块:Spring Boot集成了嵌入式的Web服务器,如Tomcat、Jetty、Undertow等,可以使应用程序成为自包含的可执行JAR文件。
-
配置管理模块:Spring Boot简化了配置管理,可以使用属性文件、YAML文件、环境变量等来配置应用程序。
-
日志管理模块:Spring Boot集成了常见的日志框架,如Logback、Log4j2等,可以方便地配置和管理日志输出。
SpringBoot模块中操作数据库的模块是Spring Data JPA
4、Spring用到了什么组件?
-
Spring Boot:Spring Boot是Spring框架的扩展,提供了自动配置和快速启动功能,简化了应用程序的开发和部署过程。
-
Spring MVC:Spring MVC是一个基于模型-视图-控制器(MVC)设计模式的Web框架,用于构建Web应用程序。它提供了处理请求和响应的控制器、视图解析器等组件。
-
Spring Data:Spring Data是一个简化数据库访问的组件,提供了对关系型数据库和NoSQL数据库的统一访问方式,包括Spring Data JPA、Spring Data JDBC、Spring Data MongoDB等子项目。
-
Spring AOP:Spring AOP(面向切面编程)是一种编程范式,用于实现横切关注点的模块化。它可以将通用的横切逻辑(例如日志、事务管理等)与其他模块分离开来。
-
Spring Core(核心):Spring Core是Spring框架的核心组件,提供了IoC(控制反转)和DI(依赖注入)容器,用于管理应用程序中的对象和依赖关系。
5、什么是IoC? 什么是AOP?
IoC的含义是控制反转,举个汽车例子可以更好的帮助我们理解何为控制反转。
构建⼀辆⻋(Car Class),然⽽⻋需要依赖⻋身,⽽⻋身需要依赖底盘,⽽底盘需要依赖轮胎,由上往下一层层实现;
一种汽车型号的轮胎尺寸大小是固定的,当需要生产不同尺寸大小的轮胎尺寸时,此时就需要由上到下修改轮胎尺寸参数,十分繁琐。为此我们转换思路,将原来由⾃⼰创建的下级类,改为传递的⽅式(也就是注⼊的⽅式),因为我们不需要在当前类中创建下级类了,所以下级类即使发⽣变化(创建或减少参数),当前类本身也⽆需修改任何代码,这样就完成了程序的解耦。
IoC容器的优点:实现了代码的解耦,无需关注代码实现的细节
AOP见下图所示:
AOP的好处包括:
- 降低代码的重复性:相同的横切关注点逻辑可以在多个地方重用,减少了代码冗余。
- 提高代码的可维护性:将横切关注点从核心业务逻辑中分离出来,使代码更加清晰和易于理解。
- 提高代码的可重用性:切面的逻辑可以独立于核心业务逻辑进行修改和扩展,提高了代码的可重用性。
- 改善代码的灵活性和可扩展性:通过配置切面,可以动态地增加、删除或修改横切关注点的逻辑,而无需修改核心AOP是面向切面编程的缩写。
6、SpringBoot运行原理?
SpringBoot是一个基于Spring框架的快速开发脚手架,它的运行原理可以简单概括为以下几个步骤:
-
SpringBoot的启动类是@SpringBootApplication注解标注的类,它会自动扫描同级包及其子包下的所有类,将它们作为Spring Bean进行加载。
-
SpringBoot会根据classpath下的配置文件(application.properties或application.yml)来配置应用程序的行为,例如端口号、数据库连接等。
-
SpringBoot会根据依赖关系自动配置应用程序的各种组件,例如WebMvc、JdbcTemplate等。
-
SpringBoot会根据配置文件中的信息来启动内嵌的Tomcat、Jetty或Undertow等Web容器,将应用程序部署到Web容器中。
-
应用程序启动后,SpringBoot会自动运行所有实现了CommandLineRunner接口的Bean,这些Bean可以用来执行一些初始化操作。
7、对于SpringBoot和SpringMVC的理解?
SpringBoot的理解:
Spring Boot 本质上是 Spring 框架的延伸和扩展,它的诞生是为了简化 Spring 框架初始搭建以及开发的过程,可以理解为创建Spring框架的脚手架,大大提高了创建Spring项目的效率。同时SpringBoot框架还具备了约定大于配置的特点。
Spring 的诞⽣是为了简化 Java 程序的开发的,⽽ Spring Boot 的诞⽣是为了简化 Spring 程序开发的。
Spring Boot 翻译⼀下就是 Spring 脚⼿架,就是为了快速开发 Spring 框架⽽诞⽣的
Spring Boot 项⽬的⼀大特点:约定⼤于配置。较于Spring需要配置Bean的扫描路径,而SpringBoot就不需要。
SpringMVC的理解:
Spring MVC是一个基于Java的Web框架,用于开发Web应用程序。它基于MVC(Model-View-Controller)设计模式,将应用程序的逻辑分为模型(Model)、视图(View)和控制器(Controller)三个部分,以实现代码的分离和模块化。
Spring MVC的工作流程如下:
- 客户端发送一个HTTP请求到服务器。
- 前端控制器(DispatcherServlet)接收到请求,并负责请求的分发和处理。
- 根据请求的URL,前端控制器将请求发送给合适的控制器(Controller)。
- 控制器处理请求,执行相应的业务逻辑,并可能访问数据库或其他外部服务。
- 控制器将处理结果封装为模型(Model)对象,交给视图解析器(View Resolver)。
- 视图解析器根据控制器返回的模型和视图的名称,找到对应的视图(View)。
- 视图负责渲染模型数据,并生成最终的响应内容。
- 响应内容通过前端控制器发送给客户端。
Spring MVC的特点和优势包括:
-
灵活性:Spring MVC以松散耦合的形式组织代码,可以与其他Spring框架集成,并可以与多种视图技术(如JSP、Thymeleaf、Freemarker等)搭配使用。
-
易于测试:通过使用MVC模式,控制器(Controller)和模型(Model)可以独立于视图(View)进行测试,提高了代码的可测试性。
-
强大的请求处理:Spring MVC提供了灵活的请求映射和处理机制,可以根据URL、请求参数、请求方法等进行精确匹配,并提供了丰富的支持RESTful风格的请求处理。
-
国际化和本地化支持:Spring MVC提供了多语言和多区域的支持,可以根据用户的语言和地区自动切换视图和文本资源。
-
强大的数据绑定和表单处理:Spring MVC支持数据绑定,可以将请求参数自动绑定到控制器中的Java对象,并提供了表单验证和错误处理的功能。
-
安全性:Spring MVC集成了Spring Security框架,可以方便地实现用户认证和授权功能。