第一章
-
SpringBoot有哪些优点?
Spring Boot作为Java开发的框架和工具集,具有许多优点,这些优点有助于简化开发过程并提高效率。以下是一些主要的优点:
-
简化配置: Spring Boot采用约定优于配置的原则,通过自动配置和默认值,减少了开发人员的配置工作,使项目配置更加简洁。
-
快速开发: Spring Boot提供了快速构建项目的能力,内嵌了常用的容器,如Tomcat,无需手动配置。
-
自动配置: Spring Boot可以根据项目的依赖自动配置应用程序的各个组件,减少了手动配置的工作。
-
微服务支持: Spring Boot为构建微服务架构提供了很多支持,例如可以轻松创建RESTful API和分布式系统。
-
内嵌服务器: Spring Boot内置了常用的Web服务器,如Tomcat、Jetty和Undertow,使得部署变得更加简单。
-
自动化任务: Spring Boot支持定时任务和调度,可以方便地进行后台任务的管理和执行。
-
开发生态系统: Spring Boot集成了丰富的第三方库和插件,如Spring Security、Spring Data等,方便开发者使用。
-
健康监控: Spring Boot提供了健康检查和监控的功能,可以方便地监测应用程序的状态。
-
简化Maven/Gradle配置: Spring Boot提供了一些约定,使得构建工具的配置更加简单,同时可以自动生成依赖的版本号。
-
大量的社区支持: Spring Boot有庞大的社区支持,可以找到大量的文档、教程和解决方案。
总的来说,Spring Boot通过减少繁琐的配置和提供丰富的功能,使得Java开发变得更加高效、便捷,特别适合构建现代化的应用程序和微服务。
-
-
SpringBoot为什么能直接运行?
SpringBoot 能够直接运行的原因在于它内置了嵌入式容器,并且自动配置了许多常用的组件和依赖,使得应用程序可以独立运行,不需要外部环境的支持。
-
列一下常见的git命令(你都用过哪些命令)?或具体到某个命令的用法,如:怎么从远程仓库把代码取下来?
常见的Git命令包括:
- git init: 初始化一个新的Git仓库。
- git clone: 从远程仓库克隆代码到本地。
- git add: 将文件添加到暂存区,准备提交。
- git commit: 提交暂存区的更改到本地仓库。
- git push: 将本地提交推送到远程仓库。
- git pull: 从远程仓库拉取代码到本地,并自动合并。
- git fetch: 从远程仓库获取最新的代码,但不进行合并。
- git branch: 查看、创建、删除分支。
- git checkout: 切换分支或还原文件到之前的状态。
- git merge: 合并分支到当前分支。
- git rebase: 将一系列提交合并成一个,可用于优化提交历史。
- git log: 查看提交历史。
- git status: 查看工作区和暂存区的状态。
- git remote: 管理远程仓库。
- git config: 配置Git参数,如用户名、邮箱等。
关于从远程仓库获取代码的具体步骤,可以使用以下命令:
-
克隆仓库: 使用
git clone
命令从远程仓库克隆代码到本地。例如:git clone <远程仓库URL>
-
拉取最新代码: 如果已经克隆了仓库,可以使用
git pull
命令拉取最新代码到本地分支。例如:git pull origin <分支名>
-
获取最新代码但不合并: 如果只是想获取最新代码,但不自动合并到当前分支,可以使用
git fetch
命令。例如:git fetch origin <分支名>
-
SVN和Git用起来有什么区别,你推荐哪一个?
SVN(Subversion)和Git都是版本控制系统,用于管理和跟踪项目代码的变化。它们在工作方式、使用方式和特性上有一些区别。以下是一些主要的区别以及我为什么会倾向于推荐Git:
1. 分布式 vs 集中式:
- Git是一种分布式版本控制系统,每个开发者都可以在本地拥有完整的代码库,可以离线工作,进行更灵活的分支管理。
- SVN是一种集中式版本控制系统,代码库存储在中央服务器上,开发者需要实时连接服务器来操作,分支管理相对较复杂。
2. 本地操作:
- Git在本地存储完整的版本历史,因此大部分操作可以在本地完成,速度更快,无需频繁网络交互。
- SVN需要在服务器上进行操作,需要网络连接,速度相对较慢。
3. 分支和合并:
- Git的分支和合并非常高效,因为每个分支实际上是一个独立的代码库,合并也是本地操作。
- SVN的分支和合并相对复杂,涉及到服务器操作,可能需要解决冲突。
4. 整个历史记录:
- Git存储每个版本的快照,使得查看和回溯历史更加方便。
- SVN存储每次提交的差异,导致查看历史时可能需要较多的网络请求。
5. 社区和生态系统:
- Git拥有庞大的社区和丰富的工具、扩展和服务(如GitHub、GitLab等)。
- SVN的社区相对较小,工具和服务相对有限。
推荐:
我更倾向于推荐Git,因为它的分布式特性、快速的操作、高效的分支管理和强大的生态系统使其成为现代软件开发的首选。Git适用于个人开发者、团队合作和大型项目。然而,对于特定项目或团队的特殊需求,SVN可能仍然是一个合适的选择。最终选择应该基于项目和团队的需求,以及开发者对版本控制系统的熟悉程度。 -
logback日志级别都有哪些?
以下是 Logback 提供的标准日志级别:
-
TRACE(跟踪): 用于记录最详细的日志信息,通常用于追踪程序的执行流程。对于开发和调试非常有用,但在生产环境中通常会禁用,因为会产生大量的输出。
-
DEBUG(调试): 用于记录调试信息,帮助开发人员诊断问题。在开发和测试阶段使用,但在生产环境中通常会减少其输出。
-
INFO(信息): 用于记录重要的运行时信息,如应用程序的主要执行步骤、配置变更等。适用于生产环境,帮助管理员监控应用程序。
-
WARN(警告): 用于记录潜在的问题,不会导致应用程序停止或崩溃,但可能需要注意和处理的情况。
-
ERROR(错误): 用于记录发生的错误,可能导致应用程序异常终止或无法正常运行的情况。
-
OFF: 最高级别,用于关闭日志输出。
-
ALL: 最低级别,用于启用所有日志输出。
-
-
slf4j, logback, log4j是什么关系?
slf4j不是一个真正意义的可用应用程序,他是一个接口层
就像java 的接口性质一样,单纯集成了slf4j 的话,执行比如log.info log.debug等方法,只能在控制台打印日志,并不会在持久化到文件,或者其他自定义介质上,slf4j至少需要一个实现层框架,比如log4j,logback等 -
列举出常见的http请求方式
提示:参考2-6 开发Hello World接口- GET: 用于从服务器获取数据。GET 请求将参数附加在URL的查询字符串中,并在服务器响应中返回请求的数据。
- POST: 用于向服务器提交数据。POST 请求将数据放在请求体中,适用于提交表单数据、JSON 数据等。
- PUT: 用于向服务器更新资源。PUT 请求通常用于更新现有资源,将数据放在请求体中。
- DELETE: 用于请求服务器删除指定的资源。
-
怎么读取自定义的配置项?用什么注解?怎么设置默认值?
@Value(“${test.hello:HELLO}”)
-
bootstrap和application配置有什么区别?
bootstrap.properties和application.properties是SpringBoot中的两个配置文件。bootstrap.properties用在应用程序启动之前加载,它通常用于配置一些启动阶段需要的属性。application.properties则包含了应用程序的配置信息。
SpringBoot会自动识别下面这组配置文件
application.properties/yml
config/application.properties/yml
如果是SpringCloud,还会自动识别下面这组配置文件
bootstrap.properties/yml
config/bootstrap.properties/yml -
为什么引入SpringBoot内置依赖不需要加版本号?
引入SpringBoot内置依赖不需要加版本号是因为SpringBoot的父项目中已经定义了一系列常用的依赖版本,子项目继承这些版本信息,使得我们不需要手动去指定版本号。这样可以确保版本的兼容性和统一性。