javascript
Spring Boot 2.0 迁移指南
點(diǎn)擊上方“朱小廝的博客”,選擇“設(shè)為星標(biāo)”
回復(fù)”666“獲取新整理的1000+GB資料
前提
本文檔將幫助您把應(yīng)用程序遷移到 Spring Boot 2.0。
在你開始之前
首先,Spring Boot 2.0需要Java 8或更高版本。Java 6 和 7 不再受支持。
在 Spring Boot 2.0 中,許多配置屬性被重新命名/刪除,開發(fā)人員需要更新application.properties/?application.yml相應(yīng)的配置。為了幫助你,Spring Boot 發(fā)布了一個(gè)新spring-boot-properties-migrator模塊。一旦作為依賴添加到項(xiàng)目中,這不僅將分析應(yīng)用程序的環(huán)境并在啟動(dòng)時(shí)打印診斷信息,而且還會(huì)在運(yùn)行時(shí)為您暫時(shí)遷移屬性。這是您的應(yīng)用程序遷移期間必須具備的條件:
1<dependency> 2 ? ?<groupId>org.springframework.boot</groupId> 3 ? ?<artifactId>spring-boot-properties-migrator</artifactId> 4</dependency>注意:完成遷移后,請(qǐng)確保從項(xiàng)目的依賴關(guān)系中刪除此模塊。
構(gòu)建您的 Spring Boot 應(yīng)用程序
Spring Boot Maven 插件
如今暴露為屬性的插件配置屬性都以一個(gè)spring-boot前綴開始,以保持一致性并避免與其他插件發(fā)生沖突。
例如,以下命令prod使用命令行啟用配置文件
1mvn spring-boot:run -Dspring-boot.run.profiles=prodSurefire 默認(rèn)值
自定義包含/排除模式已與最新的 Surefire 默認(rèn)設(shè)置保持一致。如果您依賴我們的,請(qǐng)相應(yīng)地更新您的插件配置。他們?cè)?jīng)如下:
1<plugin>2 ? ?<groupId>org.apache.maven.plugins</groupId>3 ? ?<artifactId>maven-surefire-plugin</artifactId>4 ? ?<configuration>5 ? ? ? ?<includes>6 ? ? ? ? ? ? <include>**/*Tests.java</include>7 ? ? ? ? ? ? <include>**/*Test.java</include>8 ? ? ? ?</includes>9 ? ? ? ?<excludes> 10 ? ? ? ? ? ?<exclude>**/Abstract*.java</exclude> 11 ? ? ? ?</excludes> 12 ? ?</configuration> 13</plugin>PS: 如果您使用 JUnit 5,則應(yīng)將 Surefire 降級(jí)到?2.19.1。該**/*Tests.java版本不包含此模式,因此如果您依賴該模式,請(qǐng)確保將其添加到您的配置中。
Spring Boot Gradle 插件
Spring Boot 的 Gradle 插件在很大程度上已被重寫,以實(shí)現(xiàn)許多重大改進(jìn)。您可以在其參考文獻(xiàn)和API文檔中閱讀關(guān)于插件功能的更多信息。
依賴管理
Spring Boot 的 Gradle 插件不再自動(dòng)應(yīng)用依賴管理插件。相反,Spring Boot 的插件現(xiàn)在可以通過導(dǎo)入正確版本的spring-boot-dependencies BOM 來應(yīng)用依賴管理插件。這使您可以更好地控制配置依賴性管理的方式和時(shí)間。
對(duì)于大多數(shù)使用依賴管理插件的應(yīng)用程序來說就足夠了:
1apply plugin: 'org.springframework.boot' 2apply plugin: 'io.spring.dependency-management' // <-- add this to your build.gradle注意:依賴管理插件仍然是 spring-boot-gradle-plugin 的傳遞依賴項(xiàng),所以不需要在 buildscript 配置中將其列為類路徑依賴項(xiàng)。
建立可執(zhí)行的 Jars 和 Wars
該bootRepackage任務(wù)已被替換bootJar,并bootWar分別建立可執(zhí)行的 Jars 和 Wars 的任務(wù)。jar和war任務(wù)不再參與。
配置更新
BootRun,BootJar和BootWar任務(wù)現(xiàn)在都使用mainClassName的屬性來配置主類的名稱。這使得三個(gè)特定于引導(dǎo)的任務(wù)相互一致,并將其與 Gradle 自己的應(yīng)用程序插件進(jìn)行對(duì)齊。
Spring Boot 特性
默認(rèn)代理策略
Spring Boot 默認(rèn)使用 CGLIB 代理,包括 AOP 支持。如果你需要基于代理的代理,你需要設(shè)置spring.aop.proxy-target-class為false。
SpringApplication
Web 環(huán)境
Spring Boot 應(yīng)用程序現(xiàn)在可以在更多模式下運(yùn)行,因此spring.main.web-environment現(xiàn)在不推薦使用屬性來支持spring.main.web-application-type更多的控制。
如果您想確保應(yīng)用程序不啟動(dòng) Web 服務(wù)器,則必須將該屬性更改為:
1spring.main.web-application-type=none注意:還有一個(gè)setWebApplicationType上SpringApplication,如果你想這樣做編程。
Spring Boot 應(yīng)用程序事件更改
我們已經(jīng)添加了一個(gè)新事件ApplicationStartedEvent。?ApplicationStartedEvent在上下文刷新之后但在任何應(yīng)用程序和命令行參數(shù)被調(diào)用之前發(fā)送。?ApplicationReadyEvent在任何應(yīng)用程序和命令行參數(shù)被調(diào)用后發(fā)送。它表示應(yīng)用程序已準(zhǔn)備好為請(qǐng)求提供服務(wù)。
請(qǐng)參閱更新的參考文檔。
Banner
在我們限制 Spring Boot 使用的根名稱空間的數(shù)量的過程中,與標(biāo)志相關(guān)的屬性已被重定位到spring.banner。
外部化配置
輕松的綁定
有關(guān)寬松綁定的規(guī)則已經(jīng)收緊。我們假設(shè)一個(gè)現(xiàn)有的acme.my-project.my-name屬性:
所有前綴必須是 kebab格式(小寫,連字符分隔)acme.myProject或acme.my_project無效 - 您必須acme.my-project在此處使用。
屬性名稱可以使用 kebab-case(my-name),camel-case(myName)或 snake-case(my_name)。
環(huán)境屬性(來自操作系統(tǒng)環(huán)境變量)必須使用通常的大寫下劃線格式,下劃線只能用于分隔鍵的各個(gè)部分ACME_MYPROJECT_MYNAME。
這種新的放松綁定具有以下幾個(gè)優(yōu)點(diǎn):
無需擔(dān)心密鑰的結(jié)構(gòu)@ConditionalOnProperty:只要密鑰是以規(guī)范格式定義的,支持的松散變體就可以透明地工作。如果您正在使用該prefix屬性,則現(xiàn)在只需使用name或value屬性即可放置完整密鑰。
RelaxedPropertyResolver不再可以Environment自動(dòng)處理:env.getProperty("com.foo.my-bar")將找到一個(gè)com.foo.myBar屬性。
該org.springframework.boot.bind軟件包不再可用,并被新的寬松綁定規(guī)則所取代。特別是,RelaxedDataBinder朋友已被新的BinderAPI 取代。以下樣品MyProperties從app.acme前綴中進(jìn)行綁定。
1MyProperties target = Binder.get(environment) 2 ? ? ? ?.bind("app.acme", MyProperties.class) 3 ? ? ? ?.orElse(null);由于現(xiàn)在內(nèi)置了輕松綁定,因此只要使用其中一種支持的格式,就可以請(qǐng)求任何屬性而不必關(guān)心案例:
1FlagType flagType = Binder.get(environment) 2 ? ? ? ?.bind("acme.app.my-flag", FlagType.class) 3 ? ? ? ?.orElse(FlagType.DEFAULT);@ConfigurationProperties?驗(yàn)證
如果您想打開驗(yàn)證,現(xiàn)在必須為您的@ConfigurationProperties對(duì)象添加注釋@Validated。
配置位置
spring.config.location配置的行為已被修復(fù); 它先前將一個(gè)位置添加到默認(rèn)位置列表中,現(xiàn)在它將替換默認(rèn)位置。如果你依靠之前處理的方式,現(xiàn)在應(yīng)該使用它spring.config.additional-location。
開發(fā) Web 應(yīng)用程序
嵌入式容器包裝結(jié)構(gòu)
為了支持反應(yīng)性用例,嵌入式容器包結(jié)構(gòu)已經(jīng)被非常廣泛地重構(gòu)。?EmbeddedServletContainer已被重新命名為,WebServer并且該org.springframework.boot.context.embedded包已被重新定位到org.springframework.boot.web.embedded。例如,如果您使用TomcatEmbeddedServletContainerFactory回調(diào)接口定制嵌入式Tomcat容器,則應(yīng)該使用TomcatServletWebServerFactory。
特定于 Servlet 的服務(wù)器屬性
許多server.*?屬性 ( Servlet 特有的) 已經(jīng)轉(zhuǎn)移到server.servlet:
| server.context-parameters.* | server.servlet.context-parameters.* |
| server.context-path | server.servlet.context-path |
| server.jsp.class-name | server.servlet.jsp.class-name |
| server.jsp.init-parameters.* | server.servlet.jsp.init-parameters.* |
| server.jsp.registered | server.servlet.jsp.registered |
| server.servlet-path | server.servlet.path |
Web Starter 作為傳遞依賴
以前有幾個(gè) Spring Boot starter 是依賴于 Spring MVC 而傳遞的spring-boot-starter-web。借助 Spring WebFlux的新支持spring-boot-starter-mustache,spring-boot-starter-freemarker并spring-boot-starter-thymeleaf不再依賴它。開發(fā)者有責(zé)任選擇和添加spring-boot-starter-web或spring-boot-starter-webflux。
模板引擎
Mustache 模板的默認(rèn)文件擴(kuò)展名是.html,它現(xiàn)在.mustache與官方規(guī)范和大多數(shù)IDE插件一致。您可以通過更改spring.mustache.suffix配置鍵來覆蓋此新的默認(rèn)值。
Jackson / JSON 支持
在 2.0 中,我們改變了 Jackson 配置默認(rèn)值,將 JSR-310 日期寫為 ISO-8601 字符串。如果你想回到以前的行為,你可以添加spring.jackson.serialization.write-dates-as-timestamps=true到你的配置。
新的spring-boot-starter-json?starter 收集必要的位以讀取和寫入 JSON。它不僅提供了jackson-databind,與Java8 工作時(shí)也是有用的模塊:jackson-datatype-jdk8,jackson-datatype-jsr310和jackson-module-parameter-names。以前您需要手動(dòng)依賴這些模塊,現(xiàn)在可以依靠這個(gè)新的 starter 。
Spring MVC 路徑匹配默認(rèn)行為更改
我們已決定在 Spring MVC 應(yīng)用程序中更改后綴路徑匹配的默認(rèn)值(請(qǐng)參閱#11105)。按照 Spring Framework 中記錄的最佳實(shí)踐,此功能不再默認(rèn)啟用。
如果您的應(yīng)用程序希望將請(qǐng)求"GET /projects/spring-boot.json"映射到@GetMapping("/projects/spring-boot")映射,則此更改會(huì)影響您。
有關(guān)此更多信息以及如何減輕此更改,請(qǐng)查閱Spring Boot中有關(guān)路徑匹配和內(nèi)容協(xié)商的參考文檔。
Servlet 過濾器
Servlet 過濾器的默認(rèn)調(diào)度程序類型現(xiàn)在是DipatcherType.REQUEST; 這使 Spring Boot 的默認(rèn)值與 Servlet 規(guī)范的默認(rèn)值一致。如果您希望將過濾器映射到其他調(diào)度程序類型,請(qǐng)使用FilterRegistrationBean注冊(cè)您的過濾器。
注意:Spring Security 和 Spring Session 過濾器配置?ASYNC,?ERROR以及?REQUEST?調(diào)度類型。
RestTemplateBuilder
該requestFactory(ClientHttpRequestFactory)方法已被新requestFactory(Supplier<ClientHttpRequestFactory> requestFactorySupplier)方法所取代。Supplier允許構(gòu)建器生成的每個(gè)模板使用它自己的請(qǐng)求工廠,從而避免共享工廠可能導(dǎo)致的副作用。見#11255。
WebJars 定位器
Spring Boot 1.x 使用并提供依賴關(guān)系管理org.webjars:webjars-locator。webjars-locator是一個(gè)“命名不佳的庫……包裝webjars-locator-core項(xiàng)目”。org.webjars:webjars-locator應(yīng)該更新依賴項(xiàng)來org.webjars:webjars-locator-core代替使用。
Security
Spring Boot 2 極大地簡(jiǎn)化了默認(rèn)的安全配置,并使添加定制安全變得簡(jiǎn)單。Spring Boot 現(xiàn)在具有一種行為,只要您添加自己的?WebSecurityConfigurerAdapter?就會(huì)退出,而不是進(jìn)行多種與安全性相關(guān)的自動(dòng)配置。
如果您使用以下任何屬性,則會(huì)受到影響:
1security.basic.authorize-mode2security.basic.enabled3security.basic.path4security.basic.realm5security.enable-csrf6security.headers.cache7security.headers.content-security-policy8security.headers.content-security-policy-mode9security.headers.content-type 10security.headers.frame 11security.headers.hsts 12security.headers.xss 13security.ignored 14security.require-ssl 15security.sessions默認(rèn)安全
安全自動(dòng)配置不再公開選項(xiàng),并盡可能使用 Spring Security 默認(rèn)值。一個(gè)明顯的副作用是使用 Spring Security 的內(nèi)容協(xié)商進(jìn)行授權(quán)(表單登錄)。
默認(rèn)用戶
默認(rèn)情況下,Spring Boot 使用生成的密碼配置單個(gè)用戶。用戶可以使用?spring.security.user.*?屬性進(jìn)行配置。要進(jìn)一步定制用戶或添加其他用戶,您將不得不公開一個(gè)UserDetailsServicebean。
AuthenticationManager Bean
如果您想將 Spring Security?AuthenticationManager作為 bean 公開,請(qǐng)覆蓋authenticationManagerBean您的方法WebSecurityConfigurerAdapter并為其添加注釋@Bean。
OAuth2
從功能的 Spring Security OAuth 項(xiàng)目?遷移到核心 Spring Security。不再為依賴關(guān)系提供依賴管理,Spring Boot 2 通過 Spring Security 5 提供 OAuth 2.0 客戶端支持。
如果您依賴尚未遷移的 Spring Security OAuth 功能,則需要在其他 jar 上添加依賴項(xiàng),請(qǐng)查看文檔以獲取更多詳細(xì)信息。我們還繼續(xù)支持 Spring Boot 1.5,以便舊版應(yīng)用程序可以繼續(xù)使用它,直到提供升級(jí)路徑。
執(zhí)行器安全
執(zhí)行器不再有單獨(dú)的安全自動(dòng)配置(management.security.*屬性消失)。sensitive每個(gè)端點(diǎn)的標(biāo)志也沒有在安全配置中變得更加明確。如果您依賴于此行為,則需要?jiǎng)?chuàng)建或調(diào)整您的安全配置,以保護(hù)您選擇角色的端點(diǎn)。
例如,假設(shè)以下配置:
1endpoints.flyway.sensitive=false 2endpoints.info.sensitive=true 3management.security.roles=MY_ADMIN 1http 2 ? ?.authorizeRequests() 3 ? ?.requestMatchers(EndpointRequest.to("health", "flyway")).permitAll() 4 ? ? ? ?.requestMatchers(EndpointRequest.toAnyEndpoint()).hasRole("MY_ADMIN") 5 ? ? ? ?...需要注意的是在2.x,health和info在默認(rèn)情況下啟用(與health默認(rèn)情況下不顯示其細(xì)節(jié))。為了與這些新的默認(rèn)值一致,health已被添加到第一個(gè)匹配器。
使用 SQL 數(shù)據(jù)庫
配置數(shù)據(jù)源
默認(rèn)連接池已從 Tomcat 切換到 HikariCP。如果您過去spring.datasource.type在基于 Tomcat 的應(yīng)用程序中強(qiáng)制使用 Hikari,現(xiàn)在可以刪除重寫。
特別是,如果你有這樣的設(shè)置:
1<dependency>2 ? ?<groupId>org.springframework.boot</groupId>3 ? ?<artifactId>spring-boot-starter-data-jpa</artifactId>4 ? ?<exclusions>5 ? ? ? ?<exclusion>6 ? ? ? ? ? ?<groupId>org.apache.tomcat</groupId>7 ? ? ? ? ? ?<artifactId>tomcat-jdbc</artifactId>8 ? ? ? ?</exclusion>9 ? ?</exclusions> 10</dependency> 11 12<dependency> 13 ? ?<groupId>com.zaxxer</groupId> 14 ? ?<artifactId>HikariCP</artifactId> 15</dependency>現(xiàn)在可以這樣修改:
1<dependency> 2 ? ?<groupId>org.springframework.boot</groupId> 3 ? ?<artifactId>spring-boot-starter-data-jpa</artifactId> 4</dependency>WARN 消息隱含的'打開在視圖'
從現(xiàn)在起,未明確啟用的應(yīng)用程序spring.jpa.open-in-view將在啟動(dòng)過程中收到警告消息。雖然這種行為是一種友好的默認(rèn)行為,但如果您沒有完全意識(shí)到為您做了什么,這可能會(huì)導(dǎo)致問題。此消息可確保您了解可在查看呈現(xiàn)期間執(zhí)行數(shù)據(jù)庫查詢。如果你沒有問題,你可以明確地配置這個(gè)屬性來消除警告信息。
JPA 和 Spring Data
在 Spring Boot 1.x 中,一些用戶正在擴(kuò)展HibernateJpaAutoConfiguration以將高級(jí)自定義應(yīng)用于自動(dòng)配置EntityManagerFactory。為了防止發(fā)生這種錯(cuò)誤的用例,Spring Boot 2 中不再可能擴(kuò)展它。
為了支持這些用例,現(xiàn)在可以定義一個(gè)HibernatePropertiesCustomizerbean,它可以完全控制 Hibernate 屬性,包括注冊(cè)在上下文中聲明為 bean 的 Hibernate 攔截器的能力。
Flyway
Flyway 配置鍵被移動(dòng)到spring命名空間(即spring.flyway)
升級(jí)到 Spring Boot 2 將會(huì)將 Flyway 升級(jí)3.x到5.x。為確保模式升級(jí)順利進(jìn)行,請(qǐng)按照以下說明操作:
首先將您的1.5.xSpring Boot 應(yīng)用程序升級(jí)到 Flyway 4,請(qǐng)參閱Maven和Gradle的說明。
一旦您的架構(gòu)升級(jí)到了 Flyway 4,升級(jí)到 Spring Boot 2 并再次運(yùn)行遷移以將您的應(yīng)用程序移植到 Flyway 5。
Liquibase
Liquibase 配置鍵被移動(dòng)到spring命名空間(即spring.liquibase)
數(shù)據(jù)庫初始化
基本DataSource初始化現(xiàn)在僅針對(duì)嵌入式數(shù)據(jù)源啟用,并將在您使用生產(chǎn)數(shù)據(jù)庫時(shí)立即關(guān)閉。新的spring.datasource.initialization-mode(替換spring.datasource.initialize)提供更多的控制。
更新默認(rèn)的'創(chuàng)建 - 刪除'處理
spring.jpa.hibernate.ddl-auto?屬性默認(rèn)為只有在沒有使用 Liquibase 或 Flyway 等模式管理器時(shí)才使用嵌入式數(shù)據(jù)庫進(jìn)行創(chuàng)建。一旦檢測(cè)到模式管理器,默認(rèn)更改為?none。
整合 NoSQL
Redis
現(xiàn)在使用的是?Lettuce?而不是?Jedis?作為 Redis 驅(qū)動(dòng)程序spring-boot-starter-redis。如果您使用更高級(jí)別的Spring Data 構(gòu)造,則應(yīng)該發(fā)現(xiàn)變化是透明的。我們?nèi)匀恢С?Jedis,如果您愿意,通過排除?io.lettuce:lettuce-core并添加?redis.clients:jedis,則可以自由切換依賴項(xiàng)。
Elasticsearch
Elasticsearch 已經(jīng)升級(jí)到 6.0+。與 Elastic 宣布嵌入式 Elasticsearch 不再受支持一致,自動(dòng)配置NodeClient已被刪除。TransportClient可以通過使用spring.data.elasticsearch.cluster-nodes提供要連接的一個(gè)或多個(gè)節(jié)點(diǎn)的地址來自動(dòng)配置。
高速緩存
用于緩存的專用 Hazelcast 自動(dòng)配置。
無法自動(dòng)配置常規(guī)HazelcastInstance和專用HazelcastInstance緩存。因此,該spring.cache.hazelcast.config屬性已不再可用。
批量
在啟動(dòng)時(shí)執(zhí)行批處理作業(yè)的 CommandLineRunner 的順序?yàn)?0。
測(cè)試
Mockito 1.x
Mockito 1.x 不再支持@MockBean和@SpyBean。如果你不用spring-boot-starter-test來管理你的依賴關(guān)系,你應(yīng)該升級(jí)到 Mockito 2.x.
Spring Boot Actuator
Spring Boot 2 為 Actuator 帶來了重要變化,無論是內(nèi)部還是面向用戶,請(qǐng)查閱參考指南中的更新部分和新的Actuator API文檔。
您應(yīng)該期望編程模型,配置密鑰和某些端點(diǎn)的響應(yīng)格式發(fā)生變化。Actuator 現(xiàn)在在 Spring MVC,Spring WebFlux 和Jersey 上得到本地支持。
構(gòu)建
Actuator 的代碼分為兩個(gè)模塊:現(xiàn)有的spring-boot-actuator和新的spring-boot-actuator-autoconfigure。如果您使用原始模塊(spring-boot-actuator)導(dǎo)入執(zhí)行器,請(qǐng)考慮使用spring-boot-starter-actuator啟動(dòng)器替代它。
Keys 的配置結(jié)構(gòu)
Endpoints 基礎(chǔ)配置 key 已經(jīng)統(tǒng)一:
| endpoints.<id>.* | management.endpoint.<id>.* |
| endpoints.cors.* | management.endpoints.web.cors.* |
| endpoints.jmx.* | management.endpoints.jmx.* |
| management.address | management.server.address |
| management.context-path | management.server.servlet.context-path |
| management.ssl.* | management.server.ssl.* |
| management.port | management.server.port |
基本路徑
所有 endpoints 默認(rèn)情況下都已移至?/actuator。
我們修改了?management.server.servlet.context-path?的含義:它現(xiàn)在是?server.servlet.context-path?的端點(diǎn)管理等效物(只有在設(shè)置了?management.server.port?時(shí)才有效)。另外,您還可以使用新的單獨(dú)屬性為管理端點(diǎn)設(shè)置基本路徑:management.endpoints.web.base-path。
例如,如果你設(shè)置management.server.servlet.context-path=/management和management.endpoints.web.base-path=/application,你就可以在下面的路徑到達(dá)終點(diǎn)健康:/management/application/health。
如果你想恢復(fù) 1.x 的行為(即具有/health代替/actuator/health),設(shè)置以下屬性:
1management.endpoints.web.base-path=/審計(jì)事件 API 更改
AuditEventRepository?現(xiàn)在有一個(gè)包含所有可選參數(shù)的單一方法。
Endpoints
要通過 HTTP 使執(zhí)行器端點(diǎn)可用,它需要同時(shí)啟用和公開。默認(rèn):
無論您的應(yīng)用程序中是否存在和配置 Spring Security,只有端點(diǎn)/health和/info端點(diǎn)都是暴露的。
所有端點(diǎn),但/shutdown已啟用。
您可以按如下方式公開所有端點(diǎn):
1management.endpoints.web.exposure.include=*您可以通過以下方式顯式啟用/shutdown端點(diǎn):
1management.endpoint.shutdown.enabled=true要公開所有(已啟用)網(wǎng)絡(luò)端點(diǎn)除env端點(diǎn)之外:
1management.endpoints.web.exposure.include=* 2management.endpoints.web.exposure.exclude=envEndpoint changes
端點(diǎn)屬性已更改如下:
endpoints.<id>.enabled?已經(jīng)轉(zhuǎn)移到了?management.endpoint.<id>.enabled
endpoints.<id>.id?沒有替換(端點(diǎn)的 ID 不再可配置)
endpoints.<id>.sensitive沒有替代品(請(qǐng)參見執(zhí)行器安全)
endpoints.<id>.path?已經(jīng)轉(zhuǎn)移到了?management.endpoints.web.path-mapping.<id>
端點(diǎn)格式
/actuator/mappings?端點(diǎn)大改變
JSON 格式已經(jīng)更改為現(xiàn)在正確地包含有關(guān)上下文層次結(jié)構(gòu),多個(gè)DispatcherServlets,部署的 Servlet 和 Servlet 過濾器的信息。詳情請(qǐng)參閱#9979。
Actuator API 文檔的相關(guān)部分提供了一個(gè)示例文檔。
/actuator/httptrace?端點(diǎn)大改變
響應(yīng)的結(jié)構(gòu)已經(jīng)過改進(jìn),以反映端點(diǎn)關(guān)注跟蹤 HTTP 請(qǐng)求 - 響應(yīng)交換的情況。
遷移自定義端點(diǎn)
如果您有自定義執(zhí)行器端點(diǎn),請(qǐng)查看專用博客文章。該團(tuán)隊(duì)還撰寫了一個(gè) wiki 頁面,介紹如何將現(xiàn)有的執(zhí)行器端點(diǎn)遷移到新的基礎(chǔ)架構(gòu)。
Metrics
Spring Boot自己的指標(biāo)已被支持取代,包括自動(dòng)配置,用于 icrometer 和 dimensional 指標(biāo)。
設(shè)置 icrometer
如果您的 Spring Boot 2.0 應(yīng)用程序已依賴于 Actuator,則 icrometer 已在此處并自動(dòng)配置。如果您希望將度量標(biāo)準(zhǔn)導(dǎo)出到 Prometheus,Atlas 或 Datadog 等外部注冊(cè)表,Micrometer 將為許多注冊(cè)表提供依賴關(guān)系; 您可以使用spring.metrics.*屬性配置您的應(yīng)用程序以導(dǎo)出到特定的注冊(cè)表。
遷移定制計(jì)數(shù)器/量表
您可以通過以下方式創(chuàng)建各種指標(biāo),而不是在應(yīng)用程序代碼中注入CounterService或GaugeService實(shí)例化:
注入MeterRegistry和調(diào)用方法。
直接調(diào)用靜態(tài)方法Counter featureCounter = Metrics.counter("feature");。
開發(fā)者工具
熱拔插
由于 Spring Loaded 項(xiàng)目已移至 attic,它在 Spring Boot 的支持已被刪除。我們建議使用 Devtools。
Devtools 遠(yuǎn)程調(diào)試隧道
已經(jīng)從 Devtools 中刪除了對(duì)通過 HTTP 進(jìn)行隧道遠(yuǎn)程調(diào)試的支持。
已刪除的功能
以下功能不再可用:
CRaSH 支持
Spring Mobile 的自動(dòng)配置和依賴關(guān)系管理。
Spring Social 的自動(dòng)配置和依賴關(guān)系管理。
依賴關(guān)系管理commons-digester。
依賴版本
以下庫的最低支持版本已更改:
Elasticsearch 5.6
Gradle 4
Hibernate 5.2
Jetty 9.4
Spring Framework 5
Spring Security 5
Tomcat 8.5
參考資料
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Migration-Guide
想知道更多?掃描下面的二維碼關(guān)注我
加技術(shù)群入口(備注:Tech):
免費(fèi)星球入口:
最近整理了一份資料,包含Java技術(shù)棧、消息中間件、分布式存儲(chǔ)、大數(shù)據(jù)、高可用架構(gòu)、通用型技術(shù)架構(gòu)等。獲取方式:點(diǎn)擊「在看」,關(guān)注公眾號(hào)并在后臺(tái)回復(fù)“666”即可獲取。
朕已閱?
總結(jié)
以上是生活随笔為你收集整理的Spring Boot 2.0 迁移指南的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中秋干货 | 架构进阶之路上的实时数仓
- 下一篇: 面试官:限制系统扩展能力的瓶颈有哪些?