SpringBoot自動配置詳解
按照“約定大於配置”的原則,Spring Boot通過掃描依賴關係來使用類路徑中可用的庫。
對於眉哥哥pom文件中的“spring-boot-starter-*”依賴,Spring Boot會執行默認的AutoConfigurarion類。此類使用*AutoConfiguration詞法模式自動配置
使用“--dubug‘運行應用程序可以查看自動配置的相關報告
$ java -jar bulid/libs/spring-boot-rest-1.0.0.jar -- debug
排除某些庫的自動配置
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
使用自定義端口:
server.port=8081
更換配置文件的位置:
默認情況下,Spring Boot將所有配置外部化到application.properties文件中。此外,可以設置從外部讀取屬性
spring.config.name:配置文件名
spring.config.location:配置文件位置
自定義配置:
配置文件:file.name=hahaha
java文件中獲取屬性:
@Value("${file.name}")
使用.yaml作爲配置文件(eclipse排版注意不要用tab鍵)
spring:
application:
name:walang
datasource:
url:...
profiles:
不同的環境使用不同的配置(spring cloud推薦使用配置中心)。
application.properties配置激活文件(放在主類或者jar之前):
spring.profiles.active=production
.properties能夠平坦化映射,可以用 application-${profile}.properties 的方式來指定特定於配置文件的值
yaml文件用 "---"行 分割文檔序列,每個文檔分別解析爲平坦化的映射
server:
port:9000
---
spring:
profiles:development
server:
port:9001
---
spring:
profiles:production
server:
port:0909
內嵌Servlet容器
Spring Boot包括支持嵌入式Tomcat、Jetty和Undertow服務器,默認嵌入式服務將偵聽8080端口上的HTTP請求
註冊Servlet、過濾器和監聽器
如果慣例的映射不夠靈活,可以通過ServletRegistrationBean,FilterRestrationBean,ServletListenerRestrationBean類來進行完全控制
Servlet上下文初始化
如果需要在Spring Boot執行Servlet上下文初始化,則應註冊一個實現org.springframework.boot.web.servlet.ServletContextInitializer接口的bean。OnStartup方法提供對ServletContext的訪問。
當使用嵌入式容器時,可以使用@ServletComponentScan來自動注入啓用@WebServlet,@WebFilter,@WebListener註解的類
注意:@ServletComponentScan在獨立部署的容器中不起作用,因爲獨立部署的容器中使用容器內置的發現機制