BT

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Topics

Choose your language

InfoQ Homepage News Spring Boot 2.0 Will Feature Improved Actuator Endpoints

Spring Boot 2.0 Will Feature Improved Actuator Endpoints

The upcoming release of Spring Boot 2.0.0 M4 will feature an improved actuator endpoint infrastructure. The most significant changes include:

  • Support for Jersey RESTful web services
  • Support for WebFlux reactive-based web apps
  • New endpoint mapping
  • Simplified creation of user-defined endpoints
  • Improved endpoint security

Spring Boot’s actuator endpoints allow for monitoring and interaction with web applications. Previously, these endpoints were only supported by Spring MVC and creating user-defined endpoints required writing a significant amount of additional code and configuration.

Endpoint Mapping

Built-in endpoints, such as /beans, /health, etc., are now mapped to the /application root context, by default. This means, for example, that /beans in previous versions of Spring Boot is now accessed via /application/beans.

Creating User-Defined Endpoints

The new @Enpoint annotation has simplified the process of creating user-defined endpoints. The example below creates an endpoint named person. (The entire sample application can be found on GitHub.)

    
@Endpoint(id = "person")
@Component
public class PersonEndpoint {

    private final Map people = new HashMap<>();

    PersonEndpoint() {
        this.people.put("mike", new Person("Michael Redlich"));
        this.people.put("rowena", new Person("Rowena Redlich"));
        this.people.put("barry", new Person("Barry Burd"));
    }

    @ReadOperation
    public List getAll() {
        return new ArrayList<>(this.people.values());
    }

    @ReadOperation
    public Person getPerson(@Selector String person) {
        return this.people.get(person);
    }

    @WriteOperation
    public void updatePerson(@Selector String name, String person) {
        this.people.put(name, new Person(person));
    }

    public static class Person {
        private String name;

        Person(String name) {
            this.name = name;
        }

        public String getName() {
            return this.name;
        }

        public void setName(String name) {
            this.name = name;
        }
    }
}
    

This endpoint exposes the three methods defined with the @ReadOperation and @WriteOperation annotations. No additional source code is necessary and the endpoint is accessed via /application/person and /application/person/{name}. This endpoint is also automatically deployed as a JMX MBean and may be accessed by a JMX-client such as JConsole.

Improved Endpoint Security

Spring Boot 2.0 takes a slightly different approach to ensuring that web endpoints are secure by default. Web endpoints are now disabled by default and the management.security.enabled property has been removed. Individual endpoints may be enabled via configuration in the application.properties file. For example:

    
endpoints.info.enabled=true
endpoints.beans.enabled=true
    

It is possible, however, expose all of the actuator and user-defined endpoints by setting the endpoints.default.web.enabled property equal to true.

Stéphane Nicoll, principal software engineer at Pivotal, spoke to InfoQ about actuator endpoints.

InfoQ: How would you describe your experience in upgrading actuator endpoints to include support for Jersey and WebFlux?

Stéphane Nicoll: Supporting both traditional servlet-based environments and reactive-based web apps is a challenge, especially when dealing with extensive feature sets.

InfoQ: Spring is famous for supplying a tight and well thought-out API. How was this refactoring handled?

Nicoll: We've seen several initiatives in the framework team with “spring-webmvc” and “spring-webflux” sharing a great deal of features from “spring-web.” Building abstractions that work is hard and I am quite happy we're doing it again at another level.

InfoQ: What were the driving architectural principles?

Nicoll: Spring Boot 2.0 is mainly about setting up firm foundations and a good base to build on: we believe this new endpoint infrastructure is going in the right direction for production-ready features and we are looking forward to feedback from the community.

InfoQ: When is the anticipated release of Spring Boot 2.0 GA?

Nicoll: Things are still a bit in flux (pun intended) but our current plan is to release Spring Boot 2.0 GA at the end of this year.

Resources

Rate this Article

Adoption
Style

BT