spring boot 是什么?
spring boot的有點?
核心注解?
spring boot如何實現(xiàn)消息隊列?
可以使用springboot集成的消息中間件,再用相應注解開啟,@EnableJms @JmsListener
1.pom文件引入spring-boot-starter-amqp
2.yaml配置mq相關信息,ip:port, username, passwords, timeout等
3.創(chuàng)建消息隊列配置類,進行相關配置,設置隊列名稱
4.創(chuàng)建消息發(fā)送類,引入 amqptemplatem,調用合適的發(fā)送方法,傳入隊列名稱
5.創(chuàng)建消費者,使用@RabbitListener監(jiān)聽相關隊列,進行消息消費
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中屬性的配置方式及優(yōu)先級
配置文件
命令行,
系統(tǒng)環(huán)境
注解
Spring boot的自動配置是什么,過程原理,好處
springboo配置配置文件的概念及使用
springboot配置文件提供了一種管理不同環(huán)境或者部署方案的應用程序配置的方法。可以通過配置文件為不同的環(huán)境定義不同的配置集。
1.定義配置文件,在mian文件夾下,和java同義層級創(chuàng)建resources,下創(chuàng)建application開頭的yml或者properties文件。
2.激活配置文件。application.properties文件添加spring.profiles.active屬性
或者啟動應用程序時將其設置為命令行參數(shù)
通過使用系統(tǒng)環(huán)境變量或者JVM系統(tǒng)屬性指定活動概要文件
在單元測試中,可以使用注解設置@ActiveProfiles
不指定的話只用默認環(huán)境application,一般是按照順序加載文件的拿到的第一個
如何查看當前環(huán)境,context.getenvirment.getActiveProfiles
3.特定于配置文件的配置:激活文件后,Spring boot將加載相應的屬性文件并應用里面的配置。
覆蓋配置???????
4.Bean和組件掃描:通過@Profile注解bean或組件,可以指定在特定環(huán)境下才創(chuàng)建和注冊他們
spring boot注解
@Condition注解!!!!!!!!!
@Profile
Spring boot常用注解
@SpringBootApplication: @configuration+@EnableAutoConfiguration+@compontScan
@RestController:@Controller+@RequestBody
@RequestMapping,@Autowired, @Value, @Configuration,@ComponentScan,
@EnabelAutoConfiguration:啟用了Spring Boot的自動配置機制,會根據(jù)依賴關系和路徑自動配置這種組件和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: 根據(jù)特定條件啟用或者禁用bean配置。
@Profile和@Conditonal區(qū)別?
@Profile可以指定組件在哪個環(huán)境的情況下才能被注冊到容器中,不指定,任何環(huán)境都能注冊這個組件。
@Conditional注解加在配置類上,不滿足條件時,配置類都不會注入到容器中
@Conditional(WindowsCondition.class)
WindowsCondition implements Condition#(boolean)matches
Spring Boot 如何支持微服務架構?
1.spring cloud:spring boot與spring cloud無縫集成。
2.微服務設計模式
3.服務注冊和發(fā)現(xiàn)
4.外部化配置
5.分布式跟蹤和監(jiān)控
6.復原能力和容錯能力
7.容器化和部署
什么是 Spring Data?Spring Boot 中使用哪些不同的 Spring Data Starters?
Spring Data 是 Spring Framework 的一個子項目,它通過為不同的數(shù)據(jù)存儲技術提供統(tǒng)一的編程模型來簡化數(shù)據(jù)訪問。它減少了樣板代碼,并允許開發(fā)人員專注于業(yè)務邏輯。Spring Data 支持關系數(shù)據(jù)庫、NoSQL 數(shù)據(jù)庫等。它利用存儲庫來抽象數(shù)據(jù)訪問操作,無需手動 CRUD 代碼。
Spring Data的啟動器為特定數(shù)據(jù)庫提供預配置的依賴項和自動配置,從而簡化了設置過程。借助 Spring Data,開發(fā)人員可以輕松地與數(shù)據(jù)源進行交互,并從其強大的查詢功能中受益。
以下是適用于不同類型數(shù)據(jù)庫的 Spring Data 啟動器的一些示例:
- spring-boot-starter-data-jpa:此入門器提供對 Java 持久性 API (JPA) 和 Hibernate 的支持。它包括使用 JPA 處理關系數(shù)據(jù)庫所需的依賴關系和配置。
- spring-boot-starter-data-mongodb:此啟動器提供對 MongoDB(一種流行的 NoSQL 數(shù)據(jù)庫)的支持。它包括使用 Spring Data MongoDB 處理 MongoDB 所需的依賴項和配置。
- spring-boot-starter-data-redis:此啟動器提供對 Redis 的支持,Redis 是一種內存中數(shù)據(jù)結構存儲。它包括使用 Spring Data Redis 處理 Redis 所需的依賴項和配置。
- spring-boot-starter-data-cassandra:此入門器提供對 Apache Cassandra 的支持,這是一個高度可擴展的 NoSQL 數(shù)據(jù)庫。它包括使用 Spring Data Cassandra 處理 Cassandra 所需的依賴項和配置。
- spring-boot-starter-data-elasticsearch:此入門器提供對分布式搜索和分析引擎 Elasticsearch 的支持。它包括使用 Spring Data Elasticsearch 處理 Elasticsearch 所需的依賴項和配置。
springboot的自動配置?
springbootstart如何創(chuàng)建?@conditional
SpringBoot 中的 starter 到底是什么 ?
starter提供了一個自動化配置類,一般命名為 XXXAutoConfiguration ,在這個配置類中通過條件注解來決定一個配置是否生效(條件注解就是 Spring 中原本就有的),然后它還會提供一系列的默認配置,也允許開發(fā)者根據(jù)實際情況自定義相關配置,然后通過類型安全的屬性注入將這些配置屬性注入進來,新注入的屬性會代替掉默認屬性。正因為如此,很多第三方框架,我們只需要引入依賴就可以直接使用了。
spring配置如何按需加載?scope?optional?
Spring boot + MyBatis pom.xml 文件中dependencyManagement 和 dependencies的區(qū)別
spring boot 集成mybatis/mybatis-plus
YAML 配置的優(yōu)勢在哪里 ?
YAML 配置和傳統(tǒng)的 properties 配置相比之下,有這些優(yōu)勢:
- 配置有序
- 簡潔明了,支持數(shù)組,數(shù)組中的元素可以是基本數(shù)據(jù)類型也可以是對象
缺點就是不支持 @PropertySource 注解導入自定義的 YAML 配置。
spring-boot-starter-parent 有什么用 ?
新創(chuàng)建一個 Spring Boot 項目,默認都是有 parent 的,這個 parent 就是 spring-boot-starter-parent ,spring-boot-starter-parent 主要有如下作用:
- 定義了 Java 編譯版本。
- 使用 UTF-8 格式編碼。
- 執(zhí)行打包操作的配置。
- 自動化的資源過濾。
- 自動化的插件配置。
- 針對 application.properties 和 application.yml 的資源過濾,包括通過 profile 定義的不同環(huán)境的配置文件,例如 application-dev.properties 和 application-dev.yml。
Spring Boot 打成的 jar 和普通的 jar 有什么區(qū)別 ?
- Spring Boot 項目最終打包成的 jar 是可執(zhí)行 jar ,這種 jar 可以直接通過
java -jar xxx.jar命令來運行,這種 jar 不可以作為普通的 jar 被其他項目依賴,即使依賴了也無法使用其中的類。 - Spring Boot 的 jar 無法被其他項目依賴,主要還是他和普通 jar 的結構不同。普通的 jar 包,解壓后直接就是包名,包里就是我們的代碼,而 Spring Boot 打包成的可執(zhí)行 jar 解壓后,在
\BOOT-INF\classes目錄下才是我們的代碼,因此無法被直接引用。如果非要引用,可以在 pom.xml 文件中增加配置,將 Spring Boot 項目打包成兩個 jar ,一個可執(zhí)行,一個可引用。
SpringBoot多數(shù)據(jù)源拆分的思路
Spring Boot中的監(jiān)視器是什么?
多數(shù)據(jù)源
spring boot自定義starter
自動配置類
spring.factories
浙公網(wǎng)安備 33010602011771號