spring boot 是什么?
spring boot的有点?
核心注解?
spring boot如何实现消息队列?
可以使用springboot集成的消息中间件,再用相应注解开启,@EnableJms @JmsListener
1.pom文件引入spring-boot-starter-amqp
2.yaml配置mq相关信息,ip:port, username, passwords, timeout等
3.创建消息队列配置类,进行相关配置,设置队列名称
4.创建消息发送类,引入 amqptemplatem,调用合适的发送方法,传入队列名称
5.创建消费者,使用@RabbitListener监听相关队列,进行消息消费
Spring Boot 使用的默认嵌入式服务器是什么?
是tomcat,spring boot将tomcat作为依赖项包含在内,并在使用spring-boot-starter-web starter
或任何其他与web相关的启动器时将自动将其配置为默认嵌入式服务器
Spring boot如何切换内置web服务器?
排除tomcat的依赖。引入想要的服务器,加入jetty的依赖。
注意,不仅spring-boot-starter-web含有tomcat的依赖,比如websocket依赖web,web依赖tomcat.
如果项目的pom文件里有websocket,也有web,需要在web排除才有效。如果只有websocket,在websocket排除就可以了。
如果没有排除,加入了jetty依赖,还是使用tomcat.
源码?
spring boot中属性的配置方式及优先级
配置文件
命令行,
系统环境
注解
Spring boot的自动配置是什么,过程原理,好处
springboo配置配置文件的概念及使用
springboot配置文件提供了一种管理不同环境或者部署方案的应用程序配置的方法。可以通过配置文件为不同的环境定义不同的配置集。
1.定义配置文件,在mian文件夹下,和java同义层级创建resources,下创建application开头的yml或者properties文件。
2.激活配置文件。application.properties文件添加spring.profiles.active属性
或者启动应用程序时将其设置为命令行参数
通过使用系统环境变量或者JVM系统属性指定活动概要文件
在单元测试中,可以使用注解设置@ActiveProfiles
不指定的话只用默认环境application,一般是按照顺序加载文件的拿到的第一个
如何查看当前环境,context.getenvirment.getActiveProfiles
3.特定于配置文件的配置:激活文件后,Spring boot将加载相应的属性文件并应用里面的配置。
覆盖配置???????
4.Bean和组件扫描:通过@Profile注解bean或组件,可以指定在特定环境下才创建和注册他们
spring boot注解
@Condition注解!!!!!!!!!
@Profile
Spring boot常用注解
@SpringBootApplication: @configuration+@EnableAutoConfiguration+@compontScan
@RestController:@Controller+@RequestBody
@RequestMapping,@Autowired, @Value, @Configuration,@ComponentScan,
@EnabelAutoConfiguration:启用了Spring Boot的自动配置机制,会根据依赖关系和路径自动配置这种组件和bean.
@ConfigurationProperties
用于将外部配置属性绑定到 Java 类。它提供了一种将配置文件(如 application.properties 或 application.yml)中定义的属性映射到配置类中的相应字段的便捷方法。
@Configuration
@ConfigurationProperties(prefix = "myapp")
public class MyAppConfiguration {
private String name;
private int port;
// Getters and setters
// Other custom methods or business logic
}
# Custom Application Properties
myapp.name=My Application
myapp.api.key=abc123
@Conditional: 根据特定条件启用或者禁用bean配置。
@Profile和@Conditonal区别?
@Profile可以指定组件在哪个环境的情况下才能被注册到容器中,不指定,任何环境都能注册这个组件。
@Conditional注解加在配置类上,不满足条件时,配置类都不会注入到容器中
@Conditional(WindowsCondition.class)
WindowsCondition implements Condition#(boolean)matches
Spring Boot 如何支持微服务架构?
1.spring cloud:spring boot与spring cloud无缝集成。
2.微服务设计模式
3.服务注册和发现
4.外部化配置
5.分布式跟踪和监控
6.复原能力和容错能力
7.容器化和部署
什么是 Spring Data?Spring Boot 中使用哪些不同的 Spring Data Starters?
Spring Data 是 Spring Framework 的一个子项目,它通过为不同的数据存储技术提供统一的编程模型来简化数据访问。它减少了样板代码,并允许开发人员专注于业务逻辑。Spring Data 支持关系数据库、NoSQL 数据库等。它利用存储库来抽象数据访问操作,无需手动 CRUD 代码。
Spring Data的启动器为特定数据库提供预配置的依赖项和自动配置,从而简化了设置过程。借助 Spring Data,开发人员可以轻松地与数据源进行交互,并从其强大的查询功能中受益。
以下是适用于不同类型数据库的 Spring Data 启动器的一些示例:
- spring-boot-starter-data-jpa:此入门器提供对 Java 持久性 API (JPA) 和 Hibernate 的支持。它包括使用 JPA 处理关系数据库所需的依赖关系和配置。
- spring-boot-starter-data-mongodb:此启动器提供对 MongoDB(一种流行的 NoSQL 数据库)的支持。它包括使用 Spring Data MongoDB 处理 MongoDB 所需的依赖项和配置。
- spring-boot-starter-data-redis:此启动器提供对 Redis 的支持,Redis 是一种内存中数据结构存储。它包括使用 Spring Data Redis 处理 Redis 所需的依赖项和配置。
- spring-boot-starter-data-cassandra:此入门器提供对 Apache Cassandra 的支持,这是一个高度可扩展的 NoSQL 数据库。它包括使用 Spring Data Cassandra 处理 Cassandra 所需的依赖项和配置。
- spring-boot-starter-data-elasticsearch:此入门器提供对分布式搜索和分析引擎 Elasticsearch 的支持。它包括使用 Spring Data Elasticsearch 处理 Elasticsearch 所需的依赖项和配置。
springboot的自动配置?
springbootstart如何创建?@conditional
SpringBoot 中的 starter 到底是什么 ?
starter提供了一个自动化配置类,一般命名为 XXXAutoConfiguration ,在这个配置类中通过条件注解来决定一个配置是否生效(条件注解就是 Spring 中原本就有的),然后它还会提供一系列的默认配置,也允许开发者根据实际情况自定义相关配置,然后通过类型安全的属性注入将这些配置属性注入进来,新注入的属性会代替掉默认属性。正因为如此,很多第三方框架,我们只需要引入依赖就可以直接使用了。
spring配置如何按需加载?scope?optional?
Spring boot + MyBatis pom.xml 文件中dependencyManagement 和 dependencies的区别
spring boot 集成mybatis/mybatis-plus
YAML 配置的优势在哪里 ?
YAML 配置和传统的 properties 配置相比之下,有这些优势:
- 配置有序
- 简洁明了,支持数组,数组中的元素可以是基本数据类型也可以是对象
缺点就是不支持 @PropertySource 注解导入自定义的 YAML 配置。
spring-boot-starter-parent 有什么用 ?
新创建一个 Spring Boot 项目,默认都是有 parent 的,这个 parent 就是 spring-boot-starter-parent ,spring-boot-starter-parent 主要有如下作用:
- 定义了 Java 编译版本。
- 使用 UTF-8 格式编码。
- 执行打包操作的配置。
- 自动化的资源过滤。
- 自动化的插件配置。
- 针对 application.properties 和 application.yml 的资源过滤,包括通过 profile 定义的不同环境的配置文件,例如 application-dev.properties 和 application-dev.yml。
Spring Boot 打成的 jar 和普通的 jar 有什么区别 ?
- Spring Boot 项目最终打包成的 jar 是可执行 jar ,这种 jar 可以直接通过
java -jar xxx.jar
命令来运行,这种 jar 不可以作为普通的 jar 被其他项目依赖,即使依赖了也无法使用其中的类。 - Spring Boot 的 jar 无法被其他项目依赖,主要还是他和普通 jar 的结构不同。普通的 jar 包,解压后直接就是包名,包里就是我们的代码,而 Spring Boot 打包成的可执行 jar 解压后,在
\BOOT-INF\classes
目录下才是我们的代码,因此无法被直接引用。如果非要引用,可以在 pom.xml 文件中增加配置,将 Spring Boot 项目打包成两个 jar ,一个可执行,一个可引用。
SpringBoot多数据源拆分的思路
Spring Boot中的监视器是什么?
多数据源
spring boot自定义starter
自动配置类
spring.factories
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义