首页 > 其他分享 >SpringBoot面试准备 第一天

SpringBoot面试准备 第一天

时间:2024-06-12 14:28:44浏览次数:12  
标签:依赖 Java SpringBoot 第一天 Spring 配置 应用程序 JavaConfig 面试

什么是 Spring Boot?

  1. 简化 Spring 应用程序开发的框架,通过自动配置起步依赖简化的配置方式,使开发人员能够更快速、方便地创建和配置 Spring 应用程序,提高开发效率和开发体验
  2. 目标是使开发人员能够更加快速方便地创建和配置 Spring 应用程序,同时尽可能地减少样板代码和繁琐的配置。它通过自动配置、约定大于配置和起步依赖等特性,使得开发人员能够更专注于业务逻辑的实现,而不需要过多关注底层的配置细节。

起步依赖有哪些?

  1. 数据库(spring-boot-starter-jdbc):使用JDBC与Tomcat JDBC连接池的启动器
  2. 消息队列
  3. Web开发(spring-boot-starter-web):使用SpringMVC构建Web,包括RESTful应用程序,使用Tomcat作为默认的嵌入式容器的启动器
  4. JPA相关功能(spring-boot-starter-jpa):使用Spring JPA与Hibernate的启动器

SpringBoot是如何管理版本依赖?

        springboot底层使用maven管理依赖,通过控制pom.xml完成细节配置,但在这当中没有发现有管版本的地方,注意看我们有spring-boot-starter-parent这个父pom

Spring Boot 有哪些特性?

自动配置根据应用程序的依赖和配置,自动配置 Spring 应用程序的各种组件,如数据源、Web 容器等,减少了手动配置的工作量
起步依赖提供了一系列预配置的依赖项,称为起步依赖(Starter Dependencies),可以快速集成常用的技术栈,如数据库、消息队列、Web 开发
嵌入式容器内置了多种嵌入式容器,如 Tomcat、Jetty 等,可以将应用程序打包成可执行的 JAR 文件,并直接运行,无需部署到外部容器
Actuator提供了对应用程序的监控和管理功能,包括健康检查、指标收集、配置信息等,方便运维和监控应用程序
简化的配置提供了简化的配置方式,如 application.properties 或 application.yml 文件,可以集中管理应用程序的配置信息

 

 

 

 

 

 

 

 

 Spring boot 相对 Spring有什么优势 ?

优势含义

可快速构建独立的Spring应用

根据需求选择对应的场景依赖,Spring Boot会自动添加该场景所需要的全部依赖并提供自动化配置,在无需额外手动添加配置的情况下可以快速构建出一个独立的Spring应用程序

嵌入Tomcat、Jetty和Undertow服务器(无需部署WAR文件)

直接将项目打成JAR包的形式,项目内嵌了Tomcat、Jetty和Undertow服务器,因此在部署过程中减少了对第三方插件的依赖和管理

提供依赖启动器简化构建配置

在引入的依赖启动器“starter”内部已经包含了对应开发场景所需的依赖,并会自动下载和拉取相关JAR包,例如,在Web开发时,只需在构建项目时选择对应的Web场景依赖启动器spring-boot-starter-web,Spring Boot项目便会自动导入spring-webmvc、spring-web、spring-boot-starter-tomcat等子依赖,并自动下载和拉取Web开发需要的相关JAR包

自动化配置Spring和第三方库

提供的默认自动化配置类就会生效,开发者无需再手动进行配置文件的配置(除非开发者修改了相关默认配置,例如Redis地址、密码等),从而极大减少了开发人员的工作量,提高了程序的开发效率

提供监控应用

提供了一些用于生产环境运行时的特性,例如指标、健康检查和外部化配置

极少的代码生成和XML配置

在需要自定义配置的情况下,Spring Boot更加提倡使用Java config(Java配置类)替换传统的XML配置方式,这样更加方便查看和管理

 

 

 

 

 

 

 

 

 

 

 

 

 

 Spring Boot 的核心注解是哪个?

核心注解:启动类上的@SpringBootApplication

注解含义

@SpringBootConfiguration

@SpringBootConfiguration里面就只有一个@Configuration主要注解,实现配置文件的功能

@EnableAutoConfiguration

由 @AutoConfigurationPackage和@Import(EnableAutoConfigurationImportSelector.class)这两个组成的

打开自动配置的功能,帮助SpringBoot应用将所有符合条件的@Configuration配置都加载到当前SpringBoot,并创建对应配置类的Bean,并把该Bean实体交给IoC容器进行管理

@ComponentScan

Spring组件扫描注解,默认就会装配标识了@Controller,@Service,@Repository,@Component注解的类到spring容器中

 

 

 

 

 

 

 

 什么是 JavaConfig?

        用于配置 Java 应用程序的方式,它是 Spring 框架中的一种替代方案,用于替代传统的 XML 配置文件方式

        允许开发人员使用 Java 代码来定义和配置应用程序中的各种组件,包括 Bean 的定义、依赖关系、切面等。通过 JavaConfig,可以将应用程序的配置集中在一个或多个 Java 类中,使得配置更加可读、可维护,并且可以利用 Java 语言的特性进行编程。

JavaConfig 的优点?

类型安全JavaConfig 使用 Java 代码进行配置,可以在编译时进行类型检查,避免了在 XML 配置文件中可能出现的拼写错误或类型错误
易于重构 JavaConfig 使用 Java 代码进行配置,可以利用 IDE 的重构功能,轻松地进行重命名、提取方法等操作,提高了代码的可维护性
面向对象JavaConfig 可以利用 Java 语言的面向对象特性,如继承、多态等,更加灵活地进行配置和组件定义
可读性和可维护性JavaConfig 使用 Java 代码进行配置,配置信息直观可见,易于理解和维护。相比于 XML 配置文件,JavaConfig 更加直观和易读
编程能力JavaConfig 允许开发人员使用 Java 语言的编程能力,如条件判断、循环等,可以根据需要进行动态的配置

        

标签:依赖,Java,SpringBoot,第一天,Spring,配置,应用程序,JavaConfig,面试
From: https://blog.csdn.net/weixin_63164764/article/details/139609022

相关文章

  • 【接口自动化测试框架练习】springboot+react+mysql~极简版postman
    可以说是一个toyprogram,chatgpt完成了一部分工作,我也完成了一部分工作,我俩合作的,我占百分之80%,他百分之20%,哈哈没他不行,源码奉上。https://github.com/Jinwenxin/test-api-frontend1.功能简介:分成三部分,如左侧导航栏所示:测试用例管理:测试用例的增删改查以及运行测试套件管理......
  • 【S087】Springboot+Thymleaf在线答疑系统项目源码 java源代码
    运行截图:登录学生注册教师注册学生发起问题联系我们后台首页常见问题管理添加常见问题人工答疑学生管理个人信息修改密码项目组成:项目源码:源码获取⬇⬇⬇......
  • 【S086】基于Springboot图书馆管理系统项目源码 java图书借阅管理 含文档
    运行截图:登录后台主页图书列表图书上架借阅图书归还图书用户列表添加用户公告列表发布公告个人信息详情个人信息编辑项目组成:项目源码:项目文档:源码获取⬇⬇⬇......
  • Springboot自动配置的原理剖析
    @SpringBootApplication注解分析1、我们都知道Springboot的启动入口来自这个注解@SpringBootApplication,里面详细如下图2、再进一步细化如下图,那么应该是使用哪种方式来加载Springboot的自动配置类呢直接上结论,Springboot的自动配置实现方式是通过@Import注解实现的,首先......
  • springboot异常解决
    问题解决问题解释Resolved[org.springframework.http.converter.HttpMessageNotWritableException:Noconverterfor[classcom.test.entity.User]withpresetContent-Type'null']”出现这个问题表明spring在尝试将user对象序列化为http响应时,找不到适当的消息转化器。......
  • springboot打包将配置文件和jar分开
    <?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0......
  • JS类型转换面试题:[] == ![] 为true?
    前言OK,又是在学习的路上遇到了难点,今天拿来分享一哈。ok,话不多说,开始分享。下面是一道面试题console.log([]==![])你觉得上面的值打印为多少?我告诉你,打印的结果是true。如果你是猜对的或者不会可以看看我对这个问题的深度解剖,如果有大哥已经了解也欢迎在评论区指教一......
  • 力扣面试题 02.07. 链表相交
    一 题目:二思路:本题介绍两种思路解题,个人推荐思路一快速好理解 思路一: 1.先把其中一个链表的值变成负数 2.遍历另一个链表第一个出现负数的值就是交点 3.还原被改的链表 思路二:1.先用第一个链表的头节点head1搜索指针q遍历第一个链表直到为空,再把q放到head2......
  • 大厂面试高频题——动态规划
    子串、子序列300.最长递增子序列给你一个整数数组nums,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7]是数组[0,3,1,6,2,2,7]的子序列。classSolution:deflengthOfLIS(self,nums......
  • 前端面试题日常练-day63 【面试题】
    题目希望这些选择题能够帮助您进行前端面试的准备,答案在文末1.TypeScript中,以下哪个关键字用于声明一个类的构造函数?a)constructorb)initc)created)initialize2.在TypeScript中,以下哪个符号用于声明可选的函数参数?a)?b)!c)*d)~3.TypeScript中的命名......