The focus of the 4.0 release is on improving REST support. Improvements include:
- JSON-encoded and URL-encoded POST / PUT body support.
- Controllers have easy access to HTTP headers.
- Builder syntax for
- Support for user-supplied rendering functions.
- Integrated support for HTTP
- Per-resource error handling.
- Setting status text (in addition to status code) in HTTP responses.
- Wildcard HTTP method support.
In addition, DI/1 has had a number of enhancements, including the addition of a builder syntax for programmatically declaring beans.
- 443 - Prevented
loadListenerfrom being accidentally inherited and run on a managed subsystem bean factory (it should only run on the main parent factory). This is potentially breaking: if you relied on running load listeners multiple times -- however, that was never a recommended approach.
- 400 - By default,
propertydeclarations that contain a
defaultare now ignored for autowiring. In earlier versions of FW/1 (DI/1), such
propertydeclarations would have been treated as dependencies and autowired: you could override that behavior for typed properties by specifying
omitTypedProperties : truein your configuration. That is now the default behavior. In addition a new
omitDefaultedPropertiessetting has been added, also defaulted to
true, which is what tells FW/1 (DI/1) to ignore
propertydeclarations that contain a
default. If you need to restore the pre-4.0 behavior, add
omitTypedPropertiesto your configuration, set to
- 391 - Adobe ColdFusion 9.0.2 is no longer a supported platform. FW/1 4.0 relies on closure support and therefore requires Adobe ColdFusion 10 or later. Support for Railo and Lucee has not changed.
- 390 - If you override
missingBean()in DI/1, read the documentation carefully as this is now an official extension point with different behavior to previous releases.
- 448 - Added
callClojure()extension point for
- 442 - In Alpha 1 and Beta 1, the
decodeRequestBodysetting was called
enableJSONPOST. As a migration aid, attempting to set
enableJSONPOSTwill throw an exception saying you should use
- 441 -
decodeRequestBodyhandles URL-encoded form variables, which is typical for PUT, as well as JSON-encoded form bodies (see issue 389 below for the introduction of this setting).
- 439 - Add
framework.facadecomponent to make FW/1 accessible out-of-band (for integration purposes).
- 434 - Add
- 419 - Add
- 418 - Allow
factoryBean()to accept function/closure.
- 417 - Add builder syntax for bean declarations.
- 416 - Delay bean discovery (where possible) until after declarations are processed.
- 415 - Add support for CFML-only and Clojure-only search paths.
- 414 - Add support for Boot to cfmljure.
- 413 -
layout()may now be called from controllers.
- 412 - Add
renderData()builder and add
header()to set HTTP response headers.
- 411 - Add
headersargument to controllers.
- 410 - Clarified license (Apache Source License 2.0), added LICENSE file.
- 409 - Dependency injection uses additional caches to improve
getBean()performance (by a factor of 9x-25x, depending on your usage and your CFML engine).
- 407 - DI/1 now has a public
- 400 - Dependency injection ignores typed/defaulted properties by default. This can be disabled via the
- 399 -
getBean()now accepts an optional second argument that can override beans in the factory to provide constructor arguments to be used in the bean's
- 394 - Improved error messages when DI/1 attempts to use a CFC that has syntax errors to include filename/line number of the underlying error.
- 392 - A wildcard resource match is generated for
$RESOURCESto provide per-resource error handling. This can be disabled via the
- 390 - DI/1 now considers
missingBean()to be a fully supported extension point that allows users to handling
getBean()calls for unknown beans by any means, including creating and returning their own beans.
- 389 - A new setting
decodeRequestBodytells FW/1 to deserialize the JSON-encoded body of an HTTP request.
- 388 - The
renderData()have been deprecated and a new builder syntax has been added to support all possible parameters available when rendering data, e.g.,
renderData( "json" ).data( result ).statusCode( 202 ).
- 387 - A new setting
preflightOptionstells FW/1 to provide built-in support for HTTP
OPTIONS. An additional setting
optionsAccessControlallows you to fine tune the
- 386 - Routes can now have
$*as an explicit wildcard for the HTTP method.
- 385 - The new
renderData()build syntax supports
statusText()to set the HTTP response status text.
- 328 - The
typemay be a function/closure that returns
content, and an optional
writerfor delivering the data to the browser.
- 449 - Fix race condition in DI/1's bean resolution caching.
- 446 - Fix bug in
nestedresource appeared in multiple
- 440 - Improved thread safety on application reloading. Even
reloadApplicationOnEveryRequest : trueshould be safe now!
- 429 - Removed
expandPath()in calls to
- 427 - Fixed bug that prevented
after()working in Clojure controllers; fixed bug that caused Clojure controller shims to be created twice.
- 422 - Fix bug with case insensitive routes.
- 420 - Fix bug in transient autowiring (caused by caching metadata).
- 395 - Corrected calls to