史上最全 SpringBoot 1.2.0.RELEASE 版本特性介绍(全文英译版)

Spring Boot v1.2.0.RELEASE

参考链接:https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-1.2-Release-Notes#new-and-noteworthy

Spring Boot 1.2 Release Notes

Upgrading from Spring Boot 1.1

Servlet 3.1, Tomcat 8 and Jetty 9

Spring Boot现在使用Tomcat 8和Jetty 9作为嵌入式servlet容器。这提供了Servlet 3.1和增强的WebSocket开箱即用的支持。如果您更喜欢使用旧版本,您仍然可以使用Tomcat 7或Jetty 8。有关降级示例,请参阅spring-boot-sample-tomcat7-jspspring-boot-sample-jetty8示例。

Logging output

Spring Boot 1.2更新了默认的日志配置,不再写入日志文件。如果需要文件输出,可以使用logging.path或logging.file属性。您还可以通过添加自己的logback.xml文件来完全自定义日志记录。

Consistent HTTP URI/body decoding

CharacterEncodingFilter现在会自动注册以实现一致的URI/body解码。您可以使用spring.http.encoding.charset属性,如果您需要的不是UTF-8或设置spring.http.encoding.enabled=false,如果你根本不想注册CharacterEncodingFilter。

IgnoreDefaultModelOnRedirect with Spring MVC

Spring MVC自动配置现在将RequestMappingHandlerAdapter的ignoreDefaultModelOnRedirect属性默认设置为true。如果你需要模型属性作为你重定向url的一部分,你可以添加以下内容到你的application.properties:

spring.mvc.ignore-default-model-on-redirect=false

Jackson defaults

自动配置的Jackson对象映射器现在具有MapperFeature.DEFAULT_VIEW_INCLUSION 和 DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES 禁用。如果您需要恢复到以前的设置,您可以添加以下到您的application.properties:

spring.jackson.mapper.default-view-inclusion=true

spring.jackson.deserialization.fail-on-unknown-properties=true

Mongo and MongoDbFactory Beans

如果您定义了自己的MongoDbFactory bean,那么MongoAutoConfiguration类将不再注册一个Mongo bean。确保在声明自己的MongoDbFactory bean时注册一个Mongo bean,或者只使用MongoDbFactory接口访问Mongo数据库。

Moved health.* properties to management.health.*

与健康相关的配置键已从health 移至management.health以确保与其他管理相关属性的一致性。

Renamed VanillaHealthIndicator class

VanillaHealthIndicator类已重命名为ApplicationHealthIndicator。但是,如果您之前在你的代码中导入了org.springframework.boot.actuate.health.VanillaHealthIndicator,那么大多数用户不会直接与该类交互,你需要将其更改为org.springframework.boot.actuate.health.ApplicationHealthIndicator。

Hibernate

SpringNamingStrategy类已经移到了org.springframework.boot.orm.jpa.hibernate包中。旧的org.springframework.boot.orm.jpa.SpringNamingStrategy保留了下来,但已弃用,并将在未来的版本中删除。

现在hibernate-envers、hibernate-jpamodelgen和hibernate-ehcache都提供了托管依赖项。

PersistenceExceptionTranslationPostProcessor

默认情况下,现在将注册PersistenceExceptionTranslationPostProcessor。如果你不想要异常转换,设置spring.dao.exceptiontranslation.enabled属性为false。

Health JSON

当只涉及单个HealthIndicator指示器时,对/health执行器端点JSON进行了轻微修改。如果您以前查询了一个特定的JSON路径,您可能需要更新任何监视工具。

Anonymous health access restrictions

/health 执行器端点现在限制匿名访问。以匿名方式访问时,端点隐藏运行状况详细信息,仅指示服务器是启动还是关闭。它还缓存由endpoints.health.time-to-live指定的时间段的响应。可以禁用这些限制,从而恢复1.1.x的行为,通过设置endpoints.health.sensitive=false。

Spring 4.1

Spring Boot 1.2需要Spring Framework 4.1.5或更高版本,与Spring Framework 4.0不兼容。

Hikari CP

com.zaxxer:HikariCP的版本提供给引导依赖管理现在需要Java 8。如果你运行在Java 6或Java 7上,你应该更新你的依赖关系来使用com.zaxxer:HikariCP-java6代替。

Configuration Properties

spring.data.mongo.repositories.enabled 已经被重命名为spring.data.mongodb.repositories.enabled.

Deprecations

org.springframework.boot.actuate.system.ApplicationPidListener class已经被ApplicationPidFileWriter取代了

CLI @EnableRabbitMessaging 注解已经被spring-rabbit项目的@EnableRabbit取代了

http.mappers. 属性已经被废弃,取而代之的是他们spring.jackson.serialization. equivalents.

org.springframework.boot.json.SimpleJsonParser 已经被废弃,取而代之的是 BasicJsonParser以避免混淆``JSON Simple'' 库

New and Noteworthy

Version Updates

Spring Boot 1.2构建于Spring Framework 4.1之上,并且需要Spring Framework 4.1。在这个版本中已经升级了一些第三方依赖项,包括Jackson、Joda Time和Hibernate Validator。Tomcat 8和Jetty 9现在是默认的嵌入式servlet容器(提供了servlet 3.1支持)。

@SpringBootApplication annotation

添加了一个新的@SpringBootApplication便利注释,它等价于@Configuration + @EnableAutoConfiguration + @ComponentScan。如果您发现经常使用这三个注释,您可能需要考虑交换。

JTA Support

Spring Boot 1.2现在使用Atomkos或Bitronix嵌入式事务管理器支持跨多个XA资源的分布式JTA事务。当部署到合适的Java EE应用服务器时,也支持JTA事务。

当检测到JTA环境时,将使用Spring的JtaTransactionManager来管理事务。自动配置的JMS、数据源和JPA bean将升级为支持XA事务。您可以使用诸如@Transactional之类的标准Spring习语来参与分布式事务。

此外,提供了通用支持类,使Atomkos和Bitronix更容易配置,即使您没有使用@EnableAutoConfiguration。See the JTA section of the reference manual for details。

JNDI Lookups

如果您正在使用一个完整的Java EE应用服务器,您现在可以从JNDI查找数据源和JMS ConnectionFactory bean。使用spring.datasource.jndi-name和spring.jms.jndi-name属性在你的application.properties 或者 application.yml 文件。

Jackson customization

现在可以使用spring.jackson属性customize the Jackson ObjectMapper。Jackson的SerializationFeature,DeserializationFeature,MapperFeature,JsonParser.Feature 和 JsonGenerator.Feature 对象可以使用序列化、反序列化、映射器、解析器和生成器属性进行定制。例如,启用DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,你可以将以下内容添加到你的application.properties中:

spring.jackson.deserialization.fail-on-unknown-properties=true

Additionally spring.jackson.date-format and spring.jackson.property-naming-strategy properties have also been added with Spring Boot 1.2.

此外spring.jackson.date-format和 spring.jackson.property-naming-strategy 属性在Spring Boot 1.2中被添加了。

Banner Interface

添加了一个新的横幅接口,可以与SpringApplication.setBanner(…)一起使用,以提供定制的横幅输出。src/main/resources/banner.txt仍然推荐用于简单的横幅,但是,如果你需要做一些奇特的事情,新的界面是有用的。

Banner Properties

现在你可以使用 ${application.version}, ${spring-boot.version}, ${application.formatted-version} 和 ${spring-boot.formatted-version} 变量在你的 src/main/resources/banner.txt 文件打印的应用程序版本号 and/or Spring Boot 版本号。格式化后的版本用括号括起来,并包含一个v前缀,例如, (v1.2.0.RELEASE).

JMS Support

Spring Framework 4.1的@JmsListener注释现在提供了自动配置功能。只要类路径上有spring-jms.jar, @EnableJms注释也会自动配置。

AMQP Support

类似地,Spring AMQP 1.4的@RabbitListener注释也提供了自动配置功能。只要类路径中有spring-rabbit.jar, @EnableRabbit 注释也会自动配置。现有的Rabbit自动配置也被扩展为自动创建RabbitMessagingTemplate。

Spring Cloud Connectors

spring-cloud-connectors添加了自动配置功能,这个版本还包含了一个新的spring-boot-starter-cloud-connectors POM。自动配置提供了与@CloudScan注释等价的功能。

Email Support

一个新的spring-boot-starter-mail ' starter POM "已经添加,同时还支持自动配置。你可以在你的服务中注入一个' JavaMailSender bean来发送电子邮件(send emails)。spring.mail.*属性可用于自定义项目,如SMTP主机。

Undertow Embedded Servlet Container

除了Tomcat和Jetty, Spring Boot现在还支持作为嵌入式Servlet容器的Undertow。有关如何切换的详细信息,请参阅参考文档。

CLI Updates

Creating a new project

spring CLI命令行工具包括一个新的init选项,它可以用于从start.spring.io创建一个项目。例如,要创建一个新的web应用程序,你可以输入:

$ spring init -d=web myapp.zip

CLI extensions

现在可以使用CLI本身安装和卸载CLI扩展。spring install <maven coordinates>将获取一个远程jar并将其安装到CLI中。spring uninstall可以用来删除以前安装的扩展。

Other CLI changes

CLI现在检测并支持Spring的@Cacheable注释。

Declarative SSL with Jetty and Tomcat

现在可以通过设置各种 server.ssl.*属性以声明的方式配置SSL(configured declaratively )。对Tomcat和Jetty都提供了支持。更多细节请参阅参考文档。

Actuator Endpoints

一个全局的endpoints.enabled属性添加到configure中,以确定端点是否应在默认情况下启用或禁用。这允许您从当前选择退出(opt-out)模型切换到选择加入(opt-in)模型。例如,要禁用所有结束端点except health,您可以使用以下application.properties:

endpoints.enabled=false

endpoints.health.enabled=true

Metrics

System metrics

现在提供了堆、线程、类和GC信息的系统度量。

DataSource metrics

数据源池度量现在通过/metrics执行器端点公开。对于Tomcat、Hikari和Commons DBCP连接池,将公开活动连接的数量和池使用细节。

Tomcat session metrics

如果您使用Tomcat作为您的嵌入式servlet容器,那么现在将公开活动会话和最大会话的数量。

Dropwizard metrics

Dropwizard的MetricRegistry中的项目现在通过/metrics端点自动公开。Gauges和Counters反映为一个单一的值。Timers、Meters和Histograms被扩展为包含所有类型Number属性的度量集。

Health indicators

JSON format

现在,无论实际涉及的HealthIndicators的数量如何,/health执行器端点都将返回一致的JSON。这使得查询特定项的JSON变得更加容易。

DataSourceHealthIndicator

DataSourceHealthIndicator现在使用spring.datasource.validation-query属性(如果设置了该属性)以检查数据库的运行状况。

DiskSpaceHealthIndicator

空闲磁盘空间现在作为 /health 指示器的一部分报告,如果它低于某个阈值(默认为10Mb),就会被用来触发DOWN状态。health.diskspace.path和health.diskspace.threshold属性可用于自定义指标。

Conditions

@ConditionalOnProperty注释已经用新的havingValue和matchIfMissing属性进行了更新。现在可以使用条件创建更复杂的属性匹配条件。还添加了一个新的AnyNestedCondition类,它可以用来组合其他@Conditions。最后,@ConditionalOnBean注释现在支持声明为String属性和Class的类型。

GSON Support

现在可以使用GSON而不是Jackson来创建JSON输出。Jackson仍然是默认的和推荐的选择。如果你使用GSON,你应该把Jackson库排除在Maven/Gradle编译之外,除非你使用Spring Boot的执行器,这需要Jackson。从Spring Boot 1.2.2开始,如果类路径中同时包含Gson和Jackson,则可以通过设置 spring.http.converters.preferred-json-mapper来配置应用程序使用Gson。

EmbeddedServerPortWriter

spring-actuator项目包括一个新的org.springframework.boot.actuate.system.EmbeddedServerPortFileWriter类,可用于在应用程序启动时将嵌入式服务器的端口号写入文件。

Log4j2

Log4J现在被支持作为替代日志记录系统,并且提供了spring-boot-starter-log4j2启动POM。Logback仍然是默认的和推荐的日志系统。

Jersey auto-configuration

Jersey现在提供了自动配置支持。详细信息请参考参考文档。

Apache-Commons DBCP2 Support

除了Tomcat、Hikari和DBCP (v1)之外,现在还支持Apache commons-dbcp2数据库连接池库。

Maven Plugin

现在可以禁用spring-boot-maven-plugin的重新打包任务。如果你想使用spring-boot:run,但你不需要“Fat Jars”,这可能会很有用。

Configuration meta-data

spring-boot、spring-boot-autoconfigure和spring-boot-actuator jar现在包含了额外的元数据文件,工具开发人员可以使用这些文件在application.properties文件中提供“代码完成”支持。还提供了一个注释处理器,允许您从@ConfigurationProperties类自动生成自己的文件。

Miscellaneous

Spring Boot 1.2还包含了以下各种更新:

RedisProperties类现在包含一个数据库字段。

RelaxedDataBinder类支持alais属性。

正则表达式现在可以用于所有keystosanitize属性。

AnsiOutput可以被配置通过使用spring.output.ansi.enabled 属性。

现在你可以放置favicon.ico文件进/public, /static, /resources folders (next to other static web assets)。

ApplicationPidFileWriter(以前的ApplicationPidListener)编写的文件的位置现在可以使用spring.pidfile属性或者PIDFILE 环境变量指定。

Tomcat数据源信息现在通过JMX自动公开。

用@Configuration注释的SpringBootServletInitializer子类不再需要覆盖.configure方法来注册源。

如果您愿意,现在可以使用XML作为应用程序属性格式。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,287评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,346评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,277评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,132评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,147评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,106评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,019评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,862评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,301评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,521评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,682评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,405评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,996评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,651评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,803评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,674评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,563评论 2 352

推荐阅读更多精彩内容