Spring Boot??v1.5.0.RELEASE
參考鏈接:https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-1.5-Release-Notes#new-and-noteworthy
Spring Boot 1.5 Release Notes
Upgrading from Spring Boot 1.4
Deprecations from Spring Boot 1.4
在Spring Boot 1.4中棄用的類、方法和屬性已經(jīng)在這個(gè)版本中刪除了叫乌。請(qǐng)確保在升級(jí)之前沒有調(diào)用已棄用的方法渣淳。特別地末荐,HornetQ和Velocity支撐被移除。
Renamed starters
以下在Spring Boot 1.4中被重命名的啟動(dòng)器現(xiàn)在已經(jīng)被刪除了近范,如果你得到了“unresolved dependency”錯(cuò)誤脊髓,請(qǐng)檢查你是否拉入了正確命名的啟動(dòng)器:
spring-boot-starter-ws?→?spring-boot-starter-web-services
spring-boot-starter-redis?→?spring-boot-starter-data-redis
@ConfigurationProperties validation
如果您有使用JSR-303約束注解的@ConfigurationProperties類,那么您現(xiàn)在應(yīng)該用@Validated額外注解它們⊥缇觯現(xiàn)有的驗(yàn)證將繼續(xù)工作,但是將記錄一個(gè)警告导匣。將來才菠,沒有@Validated的類將根本不被驗(yàn)證。
Spring Session store
以前贡定,如果你有Spring Session和沒有特殊配置的Redis, Redis會(huì)自動(dòng)用于存儲(chǔ)會(huì)話「撤茫現(xiàn)在需要指定存儲(chǔ)類型;Redis Spring Session的現(xiàn)有用戶應(yīng)該增加以下配置:
spring.session.store-type=redis
Actuator security
執(zhí)行器“sensitive”的端點(diǎn)現(xiàn)在在默認(rèn)情況下是安全的(即使不依賴于“Spring Security”)。如果您現(xiàn)有的Spring Boot 1.4應(yīng)用程序使用了Spring Security?(并且沒有任何自定義安全性配置)缓待,那么應(yīng)該像以前一樣工作进每。如果您現(xiàn)有的Spring Boot 1.4應(yīng)用程序具有自定義安全配置,并且希望對(duì)敏感端點(diǎn)開放訪問命斧,那么您需要在安全配置中顯式地配置該配置田晚。如果您正在升級(jí)一個(gè)不依賴于Spring Security?的Spring Boot 1.4應(yīng)用程序,并且如果希望保持對(duì)敏感端點(diǎn)的開放訪問国葬,就需要設(shè)置management.security.enabled=false贤徒。有關(guān)更多細(xì)節(jié),請(qǐng)參閱更新后的參考文檔-updated reference documentation汇四。
訪問端點(diǎn)所需的默認(rèn)角色也從ADMIN更改為ACTUATOR接奈。這是為了防止在碰巧將ADMIN角色用于其他目的時(shí)意外暴露端點(diǎn)。如果您想恢復(fù)Spring Boot 1.4 behavior設(shè)置management.security.roles屬性為ADMIN通孽。
InMemoryMetricRepository
InMemoryMetricRepository不再直接實(shí)現(xiàn)MultiMetricRepository⌒蚧拢現(xiàn)在注冊(cè)了一個(gè)新的InMemoryMultiMetricRepository bean,它滿足MultiMetricRepository接口背苦,并由一個(gè)常規(guī)的InMemoryMetricRepository支持互捌。由于大多數(shù)用戶將與MetricRepository或MultiMetricRepository接口交互(而不是內(nèi)存中實(shí)現(xiàn)),因此該更改應(yīng)該是透明的行剂。
spring.jpa.database
現(xiàn)在可以從spring.datasource.url屬性自動(dòng)檢測(cè)spring.jpa.database中的公共數(shù)據(jù)庫秕噪。url屬性。如果您已經(jīng)手動(dòng)定義了spring.jpa.database厚宰,并且您使用了一個(gè)公共數(shù)據(jù)庫腌巾,那么您可能想要嘗試完全刪除該屬性。
一些數(shù)據(jù)庫有不止一種方言(例如,Microsoft SQL Server有3種方言)澈蝙,所以我們可能會(huì)配置一個(gè)與您正在使用的數(shù)據(jù)庫版本不匹配的方言吓坚。如果您之前有一個(gè)有效的設(shè)置,并且希望依賴Hibernate來自動(dòng)檢測(cè)方言灯荧,則設(shè)置spring.jpa.database=default凌唬。另外,您也可以使用spring.jpa.database-platform屬性自己設(shè)置方言漏麦。
@IntegrationComponentScan
Spring Integration的@IntegrationComponentScan注解現(xiàn)在是自動(dòng)配置的。如果你遵循推薦的項(xiàng)目結(jié)構(gòu)-recommended project structure况褪,你應(yīng)該嘗試刪除它撕贞。
ApplicationStartedEvent
如果你當(dāng)前在代碼中監(jiān)聽ApplicationStartedEvent,你應(yīng)該重構(gòu)以使用ApplicationStartingEvent测垛。我們重新命名了這個(gè)類捏膨,以便更準(zhǔn)確地反映它的功能。
Spring Integration Starter
spring-boot-starter-integration POM不再包含spring-integration-jmx食侮。如果您需要Spring Integration JMX支持号涯,您應(yīng)該自己包含spring-integration-jmx依賴項(xiàng)。
Devtools excluded by default
Maven和Gradle插件現(xiàn)在都默認(rèn)將spring-boot-devtools jar打包到“fat”jar中锯七。如果你正在使用devtools遠(yuǎn)程支持链快,你現(xiàn)在需要在你的build.gradle或者pom.xml文件中顯式地設(shè)置excludeDevtools屬性。
Gradle 1.x
Spring Boot Gradle插件不再與Gradle 1兼容眉尸。以及Gradle 2.x的早期版本域蜗。請(qǐng)確保你是Gradle 2.9或更高版本。
Remote CRaSH shell
不幸的是噪猾,Spring Boot用于提供遠(yuǎn)程SSH支持的CRaSH project不再被積極維護(hù)霉祸。很遺憾,我們已經(jīng)決定棄用遠(yuǎn)程執(zhí)行器SSH支持袱蜡,并且計(jì)劃在Spring Boot 2.0中完全刪除它丝蹭。
OAuth 2 Resource Filter
The default order of the OAuth2 resource filter has changed from?3?to?SecurityProperties.ACCESS_OVERRIDE_ORDER - 1. This places it after the actuator endpoints but before the basic authentication filter chain. The default can be restored by setting?security.oauth2.resource.filter-order = 3
OAuth2資源過濾器的默認(rèn)順序已從3更改為SecurityProperties.ACCESS_OVERRIDE_ORDER - 1.。這會(huì)將它放置在執(zhí)行器端點(diǎn)之后坪蚁,但在基本身份驗(yàn)證過濾器鏈之前奔穿。可以通過設(shè)置security.oauth2.resource.filter-order = 3來恢復(fù)默認(rèn)值敏晤。
JSP servlet
默認(rèn)情況下巫橄,JSP servlet不再處于開發(fā)模式。使用DevTools時(shí)茵典,會(huì)自動(dòng)啟用開發(fā)模式湘换。也可以通過設(shè)置server.jsp-servlet.init-parameters.development=true來顯式啟用它。
Ignored paths and?@EnableWebSecurity
In Spring Boot 1.4 and earlier, the Actuator would always configure some ignored paths irrespective of the use of?@EnableWebSecurity. This has been corrected in 1.5 so that using?@EnableWebSecurity?will switch off all auto-configuration of web security thereby allowing you to take complete control.
在Spring Boot 1.4和更早的版本中,執(zhí)行器總是會(huì)配置一些忽略的路徑彩倚,而不管是否使用@EnableWebSecurity筹我。這個(gè)問題已經(jīng)在1.5中得到了糾正,因此使用@EnableWebSecurity將關(guān)閉所有web安全的自動(dòng)配置帆离,從而允許你完全控制蔬蕊。
New and Noteworthy
Tip Check?the configuration changelog?for a complete overview of the changes in configuration.
Third-party library upgrades
許多第三方庫已經(jīng)升級(jí)到最新版本。更新包括Spring Data Ingalls, Jetty 9.4, JooQ 3.9, AssertJ 2.6.0, Hikari 2.5和Neo4J 2.1哥谷。幾個(gè)Maven插件也進(jìn)行了升級(jí)岸夯。
Loggers endpoint
一個(gè)新的執(zhí)行器記錄器端點(diǎn)允許您動(dòng)態(tài)查看和更改應(yīng)用程序日志記錄級(jí)別。JMX和MVC端點(diǎn)都可用们妥。例如猜扮,要更改MVC端點(diǎn)的日志記錄級(jí)別,您可以向?/loggers/com.yourcorp.application發(fā)布一篇文章监婶。使用以下JSON:
{"configuredLevel":"DEBUG"}
要使用JMX端點(diǎn)更新記錄器旅赢,您將使用setLogLevel操作。For more details see?the updated documentation.
Apache Kafka support
Spring Boot 1.5 include auto-configuration support for Apache Kafka via thespring-kafkaproject. To use Kafka simply include the?spring-kafka`depenency and configure the appropriate `spring.kafka.*?application properties.
Spring Boot 1.5包含了通過spring-kafka項(xiàng)目對(duì)Apache Kafka的自動(dòng)配置支持惑惶。要使用Kafka煮盼,只需包含spring-kafka依賴項(xiàng)并配置相應(yīng)的spring.kafka.*?application屬性。
從Kafka接收消息就像注解一個(gè)方法一樣簡(jiǎn)單:
Cloud Foundry actuator extensions
Spring Boot的執(zhí)行器模塊現(xiàn)在包含了額外的支持带污,當(dāng)您部署到兼容的Cloud Foundry實(shí)例時(shí)就會(huì)激活這些支持僵控。/cloudfoundryapplication路徑為所有NamedMvcEndpoint bean提供了另一種安全路由。
云計(jì)算管理ui可以利用端點(diǎn)來顯示額外的執(zhí)行器信息鱼冀。例如喉祭,關(guān)鍵云計(jì)算在應(yīng)用程序狀態(tài)旁邊顯示運(yùn)行狀況信息:
你可以在參考文檔-reference documentation中閱讀更多關(guān)于Cloud Foundry端點(diǎn)的信息,你可以閱讀這篇關(guān)于PCF 1.9的博文-this blog post about PCF 1.9.雷绢。
LDAP support
Spring Boot現(xiàn)在為任何兼容的LDAP服務(wù)器提供自動(dòng)配置泛烙,并支持Unbounded內(nèi)嵌的內(nèi)存中的LDAP服務(wù)器。
See?the documentation?for more details.
AuditEvents Endpoint Support
新的AuditEventsJmxEndpoint bean現(xiàn)在允許您通過JMX查詢以前記錄的AuditEvents翘紊。MBean通過getData操作公開AuditEventRepository查找方法蔽氨。對(duì)于身份驗(yàn)證和授權(quán)事件,會(huì)自動(dòng)記錄審計(jì)帆疟,您可以使用AuditEventRepository記錄自己的事件鹉究。該信息也由一個(gè)新的/auditevents MVC端點(diǎn)公開。
Transaction manager properties
現(xiàn)在可以使用spring.transaction.*屬性配置自動(dòng)配置的PlatformTransactionManager的各個(gè)方面踪宠。目前支持“default-timeout”和“提交失敗時(shí)回滾(rollback-on-commit-failure)”屬性自赔。
JmxEndpoint interface
引入了一個(gè)新的JmxEndpoint接口,允許您開發(fā)僅通過JMX公開的執(zhí)行器端點(diǎn)柳琢。這個(gè)接口非常類似于已經(jīng)為僅針對(duì)MVC的端點(diǎn)提供的MvcEndpoint接口绍妨。
Vendor specific flyway migrations
您現(xiàn)在可以定義特定于數(shù)據(jù)庫供應(yīng)商的飛行路線遷移陶缺。要使用特定于供應(yīng)商的遷移践盼,請(qǐng)?jiān)O(shè)置flyway.locations屬性如下:
flyway.locations=db/migration/{vendor}
See?this how-to?for more details.
Deprecation level
現(xiàn)在可以在元數(shù)據(jù)中定義屬性的棄用級(jí)別驼抹。級(jí)別可以是warning(默認(rèn))或error柱锹。
下面是一個(gè)在Spring Boot 2中移動(dòng)的屬性的手動(dòng)元數(shù)據(jù)示例:
到目前為止,當(dāng)一個(gè)已棄用的屬性不再綁定時(shí)灾测,我們將全部刪除元數(shù)據(jù)爆价。這個(gè)新特性允許標(biāo)記一個(gè)屬性(這里是server.context-parameters)的錯(cuò)誤。您最喜歡的IDE的新版本應(yīng)該使用它來提供幫助媳搪。
Testing updates
現(xiàn)在可以排除通常由@Test…注解導(dǎo)入的自動(dòng)配置铭段。所有現(xiàn)有的@Test…注解現(xiàn)在都包含了一個(gè)excludeAutoConfiguration屬性∏乇或者序愚,您可以直接將@ImportAutoConfiguration(exclude=…?)?添加到您的測(cè)試中。
Spring Boot 1.5還引入了一個(gè)新的@JdbcTest注解鲜结,可以用來測(cè)試直接的JDBC交互。
Custom fat jar layouts
Spring Boot Maven和Gradle插件現(xiàn)在支持自定義fat jar布局活逆。這個(gè)特性允許在Spring Boot之外開發(fā)實(shí)驗(yàn)性的布局精刷,比如這個(gè)布局-such as this one。更多詳細(xì)信息蔗候,請(qǐng)參見更新后的文檔-?the updated documentation.怒允。
JmsTemplate customizations
It is now possible to customize the auto-configured?JmsTemplate?using additional keys available in the?spring.jms.template.*?namespace.
現(xiàn)在可以使用spring.jms.template.*名稱空間中提供的其他鍵來定制自動(dòng)配置的JmsTemplate。
Miscellaneous
Mockito 2.x現(xiàn)在可以與@MockBean一起使用(仍然與Mockito 1.9兼容)
嵌入的啟動(dòng)腳本現(xiàn)在支持強(qiáng)制停止
為Cassandra添加了一個(gè)新的健康檢查
Cassandra用戶定義的類型現(xiàn)在被解析(通過Spring Data的SimpleUserTypeResolver)
skip屬性現(xiàn)在適用于Spring Boot Maven插件運(yùn)行锈遥、“停止”和“重新打包”目標(biāo)
如果找到多個(gè)主方法類纫事,Maven和Gradle插件將自動(dòng)使用帶@SpringBootApplication注釋的方法類
Deprecations in Spring Boot 1.5
TomcatEmbeddedServletContainerFactory.setTldSkip已棄用,取而代之的是setTldSkipPatterns
ApplicationStartedEvent已被ApplicationStartingEvent取代
LoggingApplicationListener的幾個(gè)常量已經(jīng)被LogFile的版本取代
使用Guava進(jìn)行緩存已經(jīng)被棄用所灸,因?yàn)镚uava支持將在Spring Framework 5中被刪除丽惶。?Upgrade to Caffeine。
CRaSH支持已經(jīng)被棄用爬立,因?yàn)樗辉俦环e極維護(hù)
在引入JmxEndpoint之后钾唬,EndpointMBeanExporter?中的幾個(gè)受保護(hù)的方法已被棄用
SearchStrategy.PARENTS已經(jīng)被SearchStrategy.ANCESTORS取代
Apache DBCP已棄用,取而代之的是DBCP 2
server.undertow.buffers-per-region?屬性已經(jīng)被廢棄侠驯,因?yàn)樗辉偈褂?see?UNDERTOW-587)
@AutoConfigureTestDatabase已經(jīng)從org.springframework.boot.test.autoconfigure.orm.jpa移動(dòng)到org.springframework.boot.test.autoconfigure.jdbc
Property Renames
server.max-http-post-size屬性已經(jīng)被特定技術(shù)的變體所取代 (例如:server.tomcat.max-http-post-size)
spring.data.neo4j.session.scope屬性已經(jīng)被刪除