史上最全 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-jsp和spring-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 将获取一个远程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作为应用程序属性格式。

你可能感兴趣的:(史上最全 SpringBoot 1.2.0.RELEASE 版本特性介绍(全文英译版))