You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
c55900b433
This commit simplifies the Jackson-related auto-configuration that’s applied when Spring HATEOAS and Spring Data REST are on the classpath. Previously, Boot used Jackson2HalModule to apply the HAL-related ObjectMapper configuration to the context’s primary ObjectMapper. This was to allow HAL-formatted responses to be sent for requests accepted application/json (see gh-2147). This had the unwanted side-effect of polluting the primary ObjectMapper with HAL-specific functionality. Furthermore, Jackson2HalModule is an internal of Spring HATEOAS that @olivergierke has asked us to avoid using. This commit replaces the use of Jackson2HalModule with a new approach. Now, the message converters of any RequestMappingHandlerAdapter beans are examined and any TypeConstrainedMappingJackson2HttpMessageConverter instances are modified to support application/json in addition to their default support for application/hal+json. This behaviour can be disabled by setting spring.hateoas.use-hal-as-default-json-media-type to false. This property is named after Spring Data REST’s configuration option which has the same effect when using Spring Data REST. The new property replaces the old spring.hateoas.apply-to-primary-object-mapper property. Previously, when Spring Data REST was on the classpath, JacksonAutoConfiguration would be switched off resulting in the context containing multiple ObjectMappers, none of which was primary. This commit configures RepositoryRestMvcAutoConfiguration to run after JacksonAutoConfiguration. This gives the latter a chance to create its primary ObjectMapper before the former adds its ObjectMapper beans to the context. Previously, the actuator’s hypermedia support assumed that the HttpMessageConverters bean would contain every HttpMessageConverter being used by Spring MVC. When Spring HATEOAS is on the classpath this isn’t the case as it post-processes RequestMappingHandlerAdapter beans and adds a TypeConstrainedMappingJackson2HttpMessageConverter to them. This wasn’t a problem in the past as the primary ObjectMapper, used by a vanilla MappingJackson2HttpMessageConverter, was configured with Spring HATEOAS’sJackson2HalModule. Now that this pollution has been tidied up the assumption described above no longer holds true. MvcEndpointAdvice, which adds links to the actuator’s json responses, has been updated to look at the HttpMessageConverters of every RequestMappingHandlerAdapter when it’s trying to find a converter to use to write a response with additional hypermedia links. Integration tests have been added to spring-boot-actuator to ensure that the changes described above have not regressed the ability to configure its json output using spring.jackson.* properties (see gh-1729). Closes gh-3891 |
9 years ago | |
---|---|---|
.. | ||
src | 9 years ago | |
README.adoc | 10 years ago | |
pom.xml | 9 years ago |
README.adoc
= Spring Boot - Actuator Spring Boot Actuator includes a number of additional features to help you monitor and manage your application when it's pushed to production. You can choose to manage and monitor your application using HTTP endpoints, with JMX or even by remote shell (SSH or Telnet). Auditing, health and metrics gathering can be automatically applied to your application. The http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#production-ready[user guide] covers the features in more detail. == Enabling the Actuator The simplest way to enable the features is to add a dependency to the `spring-boot-starter-actuator` ``Starter POM''. To add the actuator to a Maven based project, add the following "starter" dependency: [source,xml,indent=0] ---- <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> </dependencies> ---- For Gradle, use the declaration: [indent=0] ---- dependencies { compile("org.springframework.boot:spring-boot-starter-actuator") } ---- == Features * **Endpoints** Actuator endpoints allow you to monitor and interact with your application. Spring Boot includes a number of built-in endpoints and you can also add your own. For example the `health` endpoint provides basic application health information. Run up a basic application and look at `/health` (and see `/mappings` for a list of other HTTP endpoints). * **Metrics** Spring Boot Actuator includes a metrics service with ``gauge'' and ``counter'' support. A ``gauge'' records a single value; and a ``counter'' records a delta (an increment or decrement). Metrics for all HTTP requests are automatically recorded, so if you hit the `metrics` endpoint should see a sensible response. * **Audit** Spring Boot Actuator has a flexible audit framework that will publish events to an `AuditService`. Once Spring Security is in play it automatically publishes authentication events by default. This can be very useful for reporting, and also to implement a lock-out policy based on authentication failures. * **Process Monitoring** In Spring Boot Actuator you can find `ApplicationPidListener` which creates a file containing the application PID (by default in the application directory with a file name of `application.pid`).