1.什么是springboot
springboot也是spring公司開發的一款框架。為了簡化spring項目的初始化搭建的。那么spring對應springboot有什么缺點呢?
spring項目搭建的缺點:
- 配置麻煩
- 依賴
- tomcat啟動慢
?2.springboot的特點
- 自動配置
Spring Boot的自動配置是一個運行時(更準確地說,是應用程序啟動時)的過程,考慮了眾多因素,才決定Spring配置應該用哪個,不該用哪個。該過程是SpringBoot自動完成的。
- ?起步依賴
起步依賴本質上是一個Maven項目對象模型(Project Object Model,POM),定義了對其他庫的傳遞依賴,這些東西加在一起即支持某項功能。
簡單的說,起步依賴就是將具備某種功能的坐標打包到一起,并提供一些默認的功能。
- 輔助功能
提供了一些大型項目中常見的非功能性特性,如嵌入式服務器tomcat、安全、指標,健康檢測、外部配置等。?
3.springboot常用的配置文件種類
springboot提供了兩種配置文件:
第一種:properties文件
第二種:yml文件
不管是哪種他們的前綴都是application。
yml格式:
server:port: 8088servlet:context-path: /bbb
??properties格式:
#key=value
server.port=8080
server.servlet.context-path=/aaa
?如果上面兩個文件同時存在,properties文件的優先級高。
4.springboot中java如何讀取配置文件中的內容
?我們習慣把一些自己的信息放入配置文件中,便于修改。比如OSS. 支付。 我們還希望通過java代碼能夠讀取到配置文件中自己的信息。
springboot提供了兩種方式用于讀取springboot配置文件中信息的方式。
- 第一種: @ConfigurationProperties:
?使用在類上 @ConfigurationProperties(prefix="前綴")
- ?第二種: @Value:
?它只能讀取基本類型和字符串類型
?5.profile多環境配置
我們在開發Spring Boot應用時,通常同一套程序會被安裝到不同環境,比如:開發、測試、生產等。其中數據庫地址、服務器端口等等配置都不同,如果每次打包時,都要修改配置文件,那么非常麻煩。profile功能就是來進行動態配置切換的。
1) profile配置方式
- 多profile文件方式
- yml多文檔方式
2) profile激活方式
- 配置文件
- 命令行參數
我們需要針對不同的環境來創建不同的配置文件。使用profile來激活對應的配置文件
比如:
- application-dev.properties? ?[開發環境的配置文件]
- application-test.properties? [測試環境的配置文件]
- application-pro.properties? ?[生產環境的配置文件]
?相同配置依然還是放在application.properties中。
如何激活對于的配置文件。激活的方式有兩種:
第一種: 在application配置文件中
#激活對應環境的配置文件
spring.profiles.active=pro
第二種: 部署時如何激活對應環境的配置
命令行參數:java –jar xxx.jar --spring.profiles.active=dev?
6.springboot注冊web組件
web組件表示的就是servlet,filter組件。
在spring中創建servlet時的步驟:
[1]創建一個類并繼承HttpServlet并重寫service方法
[2]注冊到web.xml文件中
<servlet><servlet-name></servlet-name><servlet-class>自己的servlet或第三方的servlet</servlet-class>
</servlet>
<servlet-mapping><servlet-name></servlet-name><url-partern>/my</url-partern>
</servlet-mapping>
? 在springboot中沒有web.xml文件,它如何注冊servlet? springboot提供了一個配置類。
創建一個Servlet:
public class MyServlet extends HttpServlet {@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("進去servlet了");}
}
?創建一個配置:
package com.ls.config;import com.ls.filter.MyFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import java.util.logging.Filter;/*** @program: springboot* @description:* @author: 1suo* @create: 2024-07-11 15:31**/
@Configuration //表示該類為配置類,等價于之前的xml配置文件
public class MyConfig {@Bean //等價于<bean標簽.public ServletRegistrationBean myServlet(){ServletRegistrationBean bean=new ServletRegistrationBean();bean.setServlet(new MyServlet());bean.setName("my");bean.setLoadOnStartup(1);bean.addUrlMappings("/my");return bean;}
}
?7.springboot包掃描的原理
?ssm項目必須加包掃描,而現在springboot沒有在寫包掃描了。
springboot自帶了包掃描的功能。核心在主類上@SpringBootApplication上,它是一個復合注解。里面包含@EnableAutoConfiguration開啟自動配置,里面包含@AutoConfigurationPackage。@Import({AutoConfigurationPackages.Registrar.class})需要導入一個自動配置包的類。加載主類所在的包,并按照該包進行掃描。
我們如果不想讓他掃描主類所在的包,我們可以使用@CompentScan(basePackages={})來指定自己的包。
8.?springboot的自動裝配原理
SSM項目,都需要加載前端控制器DispatcherServlet. 而現在的springboot并沒有加載DispatcherServlet。 springboot具備自動裝配的功能。
當springboot啟動時,加載了使用@SpringbootApplication注解的類,該注解是一個符合注解,包含@EnableAutoConfiguration該注解開啟了自動裝配功能,該注解也是一個符合注解里面包含@Import({AutoConfigurationImportSelector.class}),導入AutoConfigurationImportSelector該類自動裝配選擇器類,該類會自動加載很多自動裝配。每個自動裝配會完成對應的自動裝配功能。