javascript
creo配置文件config选项详解_5年资深架构师重点聚焦:SpringBoot的配置详解+内嵌Servlet容器
Spring Boot的配置詳解
在本節中,我們將重點聚焦在Spring Boot的配置方面。
理解Spring Boot的自動配置
按照“約定大于配置”的原則,Spring Boot通過掃描依賴關系來使用類路徑中可用的庫。對于每個pom文件中的“pring-boot-starter-*” 依賴,Spring Boot會執行默認的AutoConiguration類。
AutoConfiguration類使用*AutoConfiguration詞法模式,其中*代表類庫。例如,JPA 存儲庫的自動配置是通過JpaRepositoriesAutoConfiguration來實現的。
使用-deboug運行應用程序可以查看自動配置的相關報告。下面的命令用于顯示在3.1節中“spring-boot-rest"應用的自動配置報告。
$ java -jar build/libs/spring-boot-rest-1.0.0.jar --debug以下是自動配置類的一-些示例:
●ServerPropertiesAutoConfiguration;
●RepositoryRestMvcAutoConfiguration;
●JpaRepositoriesAutoConfiguration; .
●JmsAutoConfiguration。
如果應用程序有特殊的要求,比如需要排除某些庫的自動配置,也是能夠完全實現的。以下是排除DataSourceAutoConfiguration的示例。
@EnableAutoConfiguration (exclude= {DataSourceAutoConfiguration.class})重寫默認的配置值
也可以使用應用程序覆蓋默認配置值。重寫的配置值配置在application.properties文件中即可。
比如,如果想更改應用啟動的端口號,則可以在application.properties文件中添加如下內容。
server .port=8081這樣,這個應用程序再次啟動時,就會使用端口8081。
更換配置文件的位置
默認情況下,Spring Boot將所有配置外部化到application.properties文件中。但是, 它仍然是應用程序構建的一部分。
此外,可以通過設置來實現從外部讀取屬性。以下是設置的屬性:
●spring.config.name: 配置文件名;
●spring.config.location: 配置文件的位置。
這里,spring.config.location 可以是本地文件位置。
以下命令從外部啟動Spring Boot應用程序來提供配置文件。
$ java -jar build/ libs/ spring-boot-rest-1.0.0.jar -- spring . config . name=bootrest. properties自定義配置
開發者可以將自定義屬性添加到application.properties文件中。
例如,我們自定義了一個名為“ile.server.url"” 的屬性在application.properties 文件中。在Spring Boot啟動后,我們就能將該屬性自動注入應用中。
下面是完整的例子。
@Controller@RequestMapping("/u")public class UserspaceController {@Value("$ {file.server.url}")private String fileServerUrl;@GetMapping ("/ {username} /blogs/edit")public ModelAndView createBlog (@PathVariable ("username") Stringusername, Model model) {model . addAttribute ("blog", new Blog (null,null, null)) ;model . addAttribute ("fileServerUrl", fileServerUrl) ;//文件服務器的地址返回給客戶端return new ModelAndView (" /userspace/blogedit", "blogModel", mod-el) ;使用.yaml 作為配置文件
我們使用的是.yaml文件,以此來作為application.properties文件的一種替代方式。YAML與平面屬性文件相比,提供了類似JSON的結構化配置。YAML數據結構可以用類似大綱的縮排方式呈現,結構通過縮進來表示,連續的項目通過減號“_”來表示,map結構里面的key/value對用冒號“:來分隔。樣例如下。
spring: application:name: waylaudatasource:driverClassName: com. mysql. jdbc.Driverurl: jdbc:mysql: / /localhost/testserver:port: 8081profiles的支持
Spring Boot支持profiles,即不同的環境使用不同的配置。通常需要設置-一個系統屬性( spring.profiles.active )或OS環境變量( SPRING_ PROFILES_ ACTIVE) 。例如,使用-D參數啟動應用程序(記住將其放在主類或jar之前)。$ java -jar -Dspring . profiles.active-production
build/ libs/spring-boot-rest-1.0.0.jar在Spring Boot中,還可以在aplication.properties中設置激活的配置文件,例如,
spring. profiles .active=productionYAML文件實際上是由“__” 行分隔的文檔序列,每個文檔分別解析為平坦化的映射。
如果-一個YAML文檔包含-一個spring.profiles鍵,那么配置文件的值(逗號分隔的配置文件列表)將被反饋到Spring Enironmentaccptsrofiles)中,并且如果這些配置文件中的任何-一個被激活,那么文檔被包含在最終的合并中。
例如,
server:port: 9000spring:profiles: developmentserver:port: 9001spring:profiles: productionserver :port: 0在此示例中,默認端口為9000,但是如果Spring profile的“development" 處于激活狀態,則端口為9001,如果“production” 處于激活狀態,則為0。
要使.properties文件做同樣的事情,可以使用“aplication-S {profile};properties”的方式來指定特定于配置文件的值。
內嵌Servlet容器
Spring Boot Web Starter 內嵌了Tomcat服務器。在應用中使用嵌人式的Servlet容器,可以方便我們來進行項目的啟動和調試。
Spring Boot包括支持嵌入式Tomcat、Jetty 和Undertow服務器。默認情況下,嵌入式服務器將偵聽端口 8080上的 HTTP 請求。
注冊Servlet、過濾器和監聽器
當使用嵌人式Servlet容器時,可以通過使用Spring bean或掃描Servlet組件從Servlet規范(如HttpSessionListener )中注冊Servlet、 過濾器和所有監聽器。
默認情況下,如果上下文只包含-一個Servlet, 它將映射到“/” 路徑。在多個Servlet bean的情況下,bean名稱將被用作路徑前綴,過濾器將映射到“/*” 路徑。
如果覺得基于慣例的映射不夠靈活,可以使用ServletRegistrationBean. FilterRegistrationBean和ServletListenerRegistrationBean類進行完全控制。
Servlet上下文初始化
嵌人式Servlet 容器不會直接執行Servlet 3.0+的javax.servlet. ServletContainerInitializer接口或Spring的org.springframework. web.WebApplicationitializer接口。這是因為在war中運行的第三方庫會帶來破壞Spring Boot應用程序的風險。
如果您需要在Spring Boot應用程序中執行Servlet上下文初始化,則應注冊一個實現org.springframework.boot.web.servlet.ServletContextInitializer接口的bean。onStartup 方法提供對Servlet-Context的訪問,并且如果需要,可以輕松地用作現有WebApplicationInitializer的適配器。
當使用嵌人式容器時,可以使用@ServletComponentScan來自動注入啟用了@WebServlet、@WebFilter和@WebListener注解的類。
需要注意的是,@ServletComponentScan 在獨立部署的容器中不起作用,這是因為在獨立部署的容器中將使用容器內置的發現機制。
ServletWebServerApplicationContext
Spring Boot使用一種新型的ApplicationContext 來支持嵌人式的Servlet 容器。ServletWeb-
ServerApplicationContext 就是這樣- - 種特殊類型的WebApplicationContext,它通過搜索單個Serv-
letWebServerFactory bean來引導自身。通常, TomcatServletWebServerFactory 、JettyServletWebServer
Factory或UndertowServletWebServerFactory將被自動配置。
通常,開發者并不需要關心這些實現類。在大多數應用程序中將被自動配置,并將創建適當的ApplicationContext和ServletWebServerFactory。
更改內嵌Servlet容器
Spring Boot Web Starter默認使用了Tomcat 來作為內嵌的容器。在依賴中加入相應Servlet 容器的Starter,就能實現默認容器的替換,如下所示。
spring-boot- starterjetty: 使用Jetty 作為內嵌容器,可以替換spring bot-starter-tomcat。
springoboot-starter-undertow:使用Undertow作為內嵌容器,可以替換spring-boot-starter-tomcat。
可以使用Spring Environment屬性配置常見的Servlet 容器的相關設置。通常將在application.properties文件中來定義屬性。
常見的Servlet容器設置如下所示。
●網絡設置:監聽HTTP請求的端口( server.port)、綁定 到server.address 的接口地址等。
會話設置:會話是否持久( server.session.persistence)、會話超時( server.session.timeout)、會話數據的位置( server.session.store-dir )和會話cookie配置( serversession.cookie.* )錯誤管理:錯誤頁面的位置( serererror.path)等。
SSL。
●HTTP壓縮。
Spring Boot盡可能地嘗試公開這些常見公用設置,但也會有一些特殊的配置。對于這些例外的情況,SpringBoot提供了專用命名空間來對應特定于服務器的配置(比如server.tomcat和server.undertow )。
本篇給大家講解的是SpringBoot的配置詳解+內嵌Servlet容器這兩塊兒的內容,覺得內容不錯的朋友可以轉發關注小編一下!
下篇文章將介紹基于Sprin Security 實現的基本認證及 OAuth2,大家得空可以學習一下子~~
學以致用,努力提升自己!
總結
以上是生活随笔為你收集整理的creo配置文件config选项详解_5年资深架构师重点聚焦:SpringBoot的配置详解+内嵌Servlet容器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: wordcloud里面设置mask加载不
- 下一篇: SpringBoot 如何进行对象复制,