十八 SpringBoot
1 springboot 特点
1.自动配置:Spring Boot可以自动配置项目所需的常见配置,从而大大简化了项目的搭建和开发过程。开发者只需通过添加相应
2.的依赖,Spring Boot就会自动完成相关的配置工作。
3.独立运行:Spring Boot内嵌了如Tomcat、Jetty等Servlet容器,因此可以打包为jar或war文件,独立运行而无需外部容器。
4.简化监控:提供生产就绪型功能,如指标、健康检查和外部化配置。
5.简化安全性:在Spring Boot中,你可以轻松地添加安全性控制,保护你的应用程序。
6.无代码生成和XML配置:Spring Boot不需要你编写大量的样板代码或XML配置,使得开发过程更加高效。
2 Spring Boot 的核心注解是?
@SpringBootApplication 有下面这些注解组合:
@SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。
@EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能
@SpringBootApplication(exclude ={ DataSourceAutoConfiguration.class })。 @ComponentScan:Spring 组件扫描
3 如何实现Spring Boot应用程序的更改重新加载,而无需重新启动服务器
1.使用DevTools(开发者工具):Spring Boot DevTools是一个模块,它提供了在开发过程中快速应用更改的能力。DevTools会自动重启你的应用程序,当你更改类路径下的文件时,它会在运行时重新加载你的应用程序。要启用DevTools,只需将spring-boot-devtools依赖添加到你的pom.xml(Maven)或build.gradle(Gradle)文件中。true标记是为了防止devtools被传递性地引入生产环境的依赖中。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
2.使用Spring Cloud Config或外部化配置:如果你正在使用Spring Cloud Config或其他外部化配置解决方案,你可以通过更新配置服务器上的属性来重新加载配置,而无需重启应用程序。Spring Cloud Config客户端支持动态刷新配置。
3.使用/refresh端点:如果你已经启用了Spring Boot Actuator(另一个有用的开发模块),你可以使用/refresh端点来重新加载配置。这要求你的应用程序正在使用@RefreshScope注解,并且配置源(如配置文件、环境变量等)支持动态刷新。.启用Actuator并在配置文件中添加相关端点后,你可以发送一个POST请求到/actuator/refresh端点来触发配置刷新。
4.使用热部署(Hot Swap)工具:有一些IDE(如IntelliJ IDEA或Eclipse)提供了热部署功能,允许你在不重启服务器的情况下实时应用代码更改。这些工具通常依赖于Java的JPDA(Java Platform Debugger Architecture)和JRebel等第三方库。
5.使用JRebel或Spring Loaded:JRebel和Spring Loaded是Java虚拟机(JVM)代理,它们能够在运行时重新加载类更改。这些工具需要额外的配置,但它们能够在不重启JVM的情况下提供类的热更新。
4 Spring Boot、Spring MVC 和 Spring 的区别
Spring Boot、Spring MVC和Spring在功能和使用上存在着明显的区别。
首先,Spring是一个开源的Java应用框架,旨在提供全面的基础设施支持,用于简化企业级应用开发的复杂性。其核心是一个IoC(控制反转)容器,它将对象的创建、依赖注入和生命周期管理等任务委托给容器来完成,使得企业级应用的组件化开发变得更加简单、灵活、可维护。Spring还提供了一个AOP(面向切面编程)框架,可以在不修改原有代码的情况下实现横切关注点的功能,如事务管理、安全控制、日志跟踪等。
Spring MVC则是Spring框架中的一个模块,主要用于开发Web应用程序。它基于MVC(Model-View-Controller)设计模式,将应用程序分为模型、视图和控制器三个部分。控制器负责接收请求并将其分派到适当的处理程序,视图负责将响应呈现给用户,而模型则处理数据和业务逻辑。这种设计模式使得代码更易于维护和重用,提高了开发效率。
而Spring Boot则是一个快速开发和部署Spring应用程序的框架。它遵循“约定优于配置”的原则,通过自动化配置和默认设置,减少了繁琐的配置代码,从而简化了开发者的配置工作。Spring Boot还内嵌了多种常用的Web容器,如Tomcat、Jetty等,使得构建独立的Web应用程序变得简单。此外,Spring Boot还提供了外部化配置、健康检查、指标、日志记录等功能,方便开发者进行运维管理。
总的来说,Spring是一个全面的应用框架,提供了企业级应用开发所需的各种功能;Spring MVC则是专门用于Web开发的模块,实现了MVC设计模式;而Spring Boot则是一个快速开发和部署Spring应用程序的框架,简化了配置和部署过程。这三者各自有其独特的优势和适用场景,开发者可以根据项目需求选择合适的框架进行开发。
5 Spring Boot 配置加载顺序
1.properties 文件
2.YAML 文件
3.系统环境变量
4.命令行参数
6 yaml 配置相比 properties 配置的优势
1.语法简洁易读
:YAML使用缩进和冒号来表示层次结构,使得配置文件结构清晰易读。相比之下,Properties使用点号和等号来表示键值对,语法相对简单,但不如YAML直观。
2.更好的组织和描述复杂配置
:YAML支持注释和多行文本,使得开发者可以更好地组织和描述复杂的配置信息。这对于理解和维护大型项目中的配置非常有帮助。而Properties不支持注释和多行文本,不太适合描述复杂的配置信息。
3.支持多种数据类型
:YAML支持多种数据类型,如字符串、数字、布尔值、数组、对象等,可以更好地表示复杂的数据结构。而Properties只支持字符串类型,不支持其他数据类型,这在处理复杂配置时可能较为受限。
4.层级结构清晰
:YAML的层级结构使得配置文件更具有层次感,方便对复杂数据进行组织和管理。这种结构化的表示方式有助于开发者快速定位和修改配置信息。
5.扩展性
:YAML支持自定义标签和类型,可以扩展语言的功能和表达能力。这使得YAML在处理特定领域或复杂场景的配置时更加灵活。而Properties不支持扩展,只能使用预定义的键值对。
综上所述,YAML配置在语法简洁性、可读性、组织复杂性、数据类型支持和扩展性等方面相比Properties配置具有明显优势。因此,在需要处理复杂配置或需要更高可读性和可维护性的项目中,YAML配置通常是一个更好的选择。
7 Spring Boot 中如何管理事务
在Spring Boot中,事务管理通常通过Spring框架的事务管理支持来实现。Spring Boot为开发者提供了简洁的事务管理方式,通过注解和配置可以方便地管理事务。以下是在Spring Boot中管理事务的一些关键步骤和最佳实践:
1.添加依赖:确保你的pom.xml(Maven)或build.gradle(Gradle)中包含了Spring Boot的spring-boot-starter-data-jpa或spring-boot-starter-jdbc依赖,这些依赖会自动包含Spring框架的事务管理支持。
2.启用事务管理:在你的Spring Boot应用上启用事务管理,通常通过在配置类上使用@EnableTransactionManagement注解来实现。然而,在Spring Boot中,这个注解通常不是必需的,因为Spring Boot会自动配置很多事务相关的bean。
3.使用@Transactional注解:在需要事务支持的方法上使用@Transactional注解。这个注解告诉Spring,当这个方法被调用时,应该在一个事务的上下文中执行。你可以将这个注解放在类级别或方法级别。如果放在类级别,该类中的所有public方法都将默认运行在事务中。还可以使用@Transactional注解的属性来定制事务的行为,例如设置隔离级别、传播行为、超时时间、只读标志等。
4.配置数据源和事务管理器:在application.properties或application.yml配置文件中配置数据源和事务管理器的相关属性。Spring Boot会根据这些配置自动创建数据源和事务管理器bean。
5.处理异常:当事务中的方法抛出未检查的异常(通常是运行时异常)时,Spring会回滚事务。如果抛出的是检查异常(通常是Exception及其子类,但非RuntimeException),默认情况下事务不会回滚。你可以通过@Transactional注解的rollbackFor和noRollbackFor属性来定制回滚行为。
6.编程式事务管理:虽然声明式事务管理(使用@Transactional注解)在Spring中更为常见和推荐,但Spring也支持编程式事务管理。你可以通过PlatformTransactionManager接口手动开始、提交或回滚事务。但这种方式通常不推荐,因为它会使代码更加复杂且难以维护。
7.监控和调优:使用Spring Boot Actuator和相关的监控工具来监控事务的性能和状态。根据需要调整事务属性,如隔离级别、超时时间等,以优化性能和避免潜在的问题。
8 什么是 Spring Profiles
Spring Profiles是Spring框架中的一个核心功能,它允许开发者根据不同的环境(如开发、测试和生产环境)注册和激活不同的bean。通过使用@Profile注解,开发者可以将bean映射到特定的Profile,然后在不同的环境中激活不同的Profiles,从而仅加载和引导所需的bean。
Spring Profiles的工作原理基于两种状态的Profile:默认加载的Profile(spring.profiles.default)和指定激活的Profile(spring.profiles.active)。如果程序未指定active状态的Profile,那么将执行default状态的Profile;如果两种状态都指定,则优先执行或选择active状态的Profile。
这种机制使得开发者能够灵活地管理不同环境下的配置和bean加载,提高了应用程序的可维护性和可移植性。例如,在开发环境中,可能需要加载一些用于调试和测试的bean,而在生产环境中,则需要加载用于实际运行的bean。通过使用Spring Profiles,开发者可以轻松地实现这种环境间的切换和配置。
9 SpringBoot 中如何解决跨域问题
跨域可以在前端通过 JSONP 来解决,但是 JSONP 只可以发送 GET 请求,无法发送其他类型的请求,在 RESTful 风格的应用中,就显得非常鸡肋,因此我们推荐在后端通过(CORS,Cross-origin resource sharing)来解决跨域问题。这种解决方案并非 SpringBoot 特有的,在传统的 SSM 框架中,就可以通过CORS 来解决跨域问题,只不过之前我们是在 XML 文件中配置 CORS ,现在可以通过实现 WebMvcConfigurer 接口然后重写 addCorsMappings 方法解决跨域问题。文章来源:https://www.toymoban.com/news/detail-850618.html
10 Spring Boot 常见的日志框架
1.Logback:作为 Spring Boot 的默认日志框架,Logback 是 Log4j 的改进版本,提供了更好的性能和可靠性。它支持多种日志输出目的地,如文件、数据库、远程服务器等,并且具有自动重新加载配置文件的功能,无需重启应用。此外,Logback 还提供了丰富的过滤器,可以根据不同的条件过滤日志信息。
2.Log4j2:作为 Apache 开发的一款高性能、灵活的日志框架,Log4j2 是 Log4j 的升级版本,提供更快速的异步日志记录,并具有更优的性能和低延迟。与 Logback 相比,它在某些特定场景下可能具有更好的性能表现。
3.Java Util Logging(JUL):这是 Java SE 的默认日志框架,虽然 Spring Boot 可以配置使用 JUL 作为日志框架,但一般不推荐使用,因为它的性能和灵活性相对较差。
在使用 Spring Boot 时,推荐导入 spring-boot-starter-logging 依赖,因为它会根据 Spring Boot 的规则进行日志框架的自动配置,并确保与 Spring Boot 的其他模块协同工作。你可以通过创建相应的配置文件(如 logback.xml 或 log4j2.xml)来定制日志框架的行为,以满足你的具体需求。文章来源地址https://www.toymoban.com/news/detail-850618.html
到了这里,关于Java-常见面试题收集(十)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!