:docs: https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/
:maven-docs: https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/maven-plugin/

= Spring Boot 1.3.0 RC1 Release Notes
For changes in earlier milestones, please refer to:

 - link:Spring-Boot-1.3.0-M1-Release-Notes[v1.3.0 M1]
 - link:Spring-Boot-1.3.0-M2-Release-Notes[v1.3.0 M2]
 - link:Spring-Boot-1.3.0-M3-Release-Notes[v1.3.0 M3]
 - link:Spring-Boot-1.3.0-M4-Release-Notes[v1.3.0 M4]
 - link:Spring-Boot-1.3.0-M5-Release-Notes[v1.3.0 M5]

== Upgrading

=== Upgrading from 1.2.x
See https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-1.3.0-M1-Release-Notes#upgrading-from-spring-boot-12[the instructions in the M1 release notes] for upgrade from 1.2.x.

=== Property renames
The `error.path` property has been renamed to `server.error.path`. If you previously set an `error.path` property in your `application.properties` you should migrate.

=== Missing /templates folder errors
Spring Boot applications no longer fail to start when a `/templates` folder cannot be found. If you are using a supported templating technology, and you forget to add `/templates`, a warning is now logged instead.

=== MVC Stacktrace output
Stacktrace information is now never included when Spring MVC renders an error response. If you want Spring Boot 1.2 behavior set `server.error.include-stacktrace` to `on-trace-param`.

=== Cassandra Support
Auto-configuration is now provided for Cassandra. See the {docs}#boot-features-cassandra[reference documentation] for details.

=== Tomcat session storage
By default tomcat no longer saves session data in `/tmp`. If you want to use persistent sessions with Tomcat set the `server.session.persistent` property to `true`. The `server.session.store-dir` can be used to save files in a specific location.

=== Spring HATEOAS
The `spring.hateoas.apply-to-primary-object-mapper` property has been removed as the Spring HATEOAS auto-configuration has been reworked such that it no longer affects the context's primary `ObjectMapper`. It has been replaced with a property named `spring.hateoas.use-hal-as-default-json-media-type` which controls whether or not
the Spring HATEOAS HTTP message converter will handle requests for `application/json` in addition to requests for
`application/hal+json`.

=== Maven resources filtering

If you use the `spring-boot-starter-parent`, Maven tokens are only filtered using `@` now. This prevents any Spring placeholders in your configuration (e.g. ${foo}) to be be expanded by the build.

Concretely, if you are still using the standard format (i.e. `${project.version}`) please migrate them (`@project.version@`) or override the `maven-resources-plugin` configuration.

=== Maven spring-boot:run and ./gradlew bootRun resources
The Spring Boot Maven and Gradle plugins no longer add `src/main/resources` directly to the classpath when using `spring-boot:run` and `bootRun`. If you want live, in-place editing we recommend using Devtools. The `addResources` property can be set in your `pom.xml` or gradle build if you want to restore Spring Boot 1.2. behaviour.

== New and Noteworthy

=== X-Forwarded-For header support
X-Forwarded-For header support is now included for Jetty and Undertow. Tomcat support has also been refreshed so that a single `server.use-forward-headers` property can be set to `true` if X-Forwarded-For headers should be respected. Spring Boot will detect deployments to Cloud Foundry or Heroku and automatically enable support.

=== Session storage
The location to save persistent session data can now be specified using the `server.session.store-dir` property. You need to also set `server.session.persistent` to `true`.

=== TraceWebFilter options
The actuator `TraceWebFilter` (use to trace HTTP request/response details) can now log more information. Use the `management.trace.include` property to configure the options that you want to include (see the `TraceProperties.Include` enum).

=== Logging
The "`root cause first`" logging change made in M3 has been reverted. Stacktraces now appear in the standard format. You can set `logging.exception-conversion-word` if you prefer "`root cause first`".

=== Fully Executable Jars
Fully executable JAR support has been refined to allow the `INIT INFO` section to be customized. See the updated reference documentation for details.

=== Error handling
The `server.error.include-stacktrace` property can now be used to determine when stack trace attributes should be included in MVC error responses. Options are `never`, `always` or `on-trace-param` (with `never` being the default).

=== Maven plugin
The `spring-boot-maven-plugin` now includes a `profiles` property that can be used with `spring-boot:run`. You can configure profiles in your `pom.xml` or use `-Drun.profiles` on the command line. See the {maven-docs}examples/run-profiles.html[updated plugin documentation] for details.

=== Log Patterns
The `logging.pattern.console` and `logging.pattern.file` properties can now be used to specify a logging pattern directly from your `application.properties`. That can be handy If you only want to customize patterns as you no longer need to define your own `log*.xml` file.

=== Spring CLI
The `spring` CLI command can now generate executable WAR files. Use `$ spring war <filename.war> <script.groovy>`.

=== Miscellaneous
The following miscellaneous updates are also included with Spring Boot 1.3 RC1:

* Active profiles are now printed to output log when your application starts.
* The `spring.main.banner-mode` property can be used to switch between `CONSOLE`, `LOG` or `OFF` output.
* Remote DevTools can now work behind a proxy server (see the `spring.devtools.devtools.proxy.*` properties)
* Jackson's https://github.com/FasterXML/jackson-module-parameter-names[parameter names module] (providing Java 8 support) will now be auto-configured when it's on your classpath.
* Spring's WebSocket message converters will now be auto-configured.
* A new `DelegatingFilterProxyRegistrationBean` class has been added to allow filters to be registered with embedded servlet containers via a `DelegatingFilterProxy`.
