Mastering Spring Boot 2.0
上QQ阅读APP看书,第一时间看更新

Creating a custom endpoint

We have seen that the Actuator provides several endpoints for your application. But Spring Boot's Actuator also allows you to create a custom endpoint by implementing the EndPoint interface. Let's see the following example:

package com.dineshonjava.sba;

import java.util.ArrayList;
import java.util.List;

import org.springframework.boot.actuate.endpoint.Endpoint;
import org.springframework.stereotype.Component;
@Component
public class MyCustomEndpoint implements Endpoint<List<String>>{

   @Override
   public String getId() {
         return "myCustomEndpoint";
   }

   @Override
   public List<String> invoke() {
         // Custom logic to build the output
        List<String> list = new ArrayList<>();
        list.add("App message 1");
        list.add("App message 2");
        list.add("App message 3");
        list.add("App message 4");
        return list;
   }
   @Override
   public boolean isEnabled() {
         return true;
   }

   @Override
   public boolean isSensitive() {
         return true;
   }
}  

As you can see, the MyCustomEndpoint class implemented the EndPoint interface and it overrode four methods, getId(), invoke(), isSensitive(), and isEnabled(). The getId() method returns endpoint ID or name, and by using it you can access /myCustomEndpoint for now. Let's see what the following response returns:

[
"App message 1",
"App message 2",
"App message 3",
"App message 4"
]

The invoke() method returns an application message—whatever you want to expose from this custom endpoint. The isEnabled() and isSensitive() methods are used for enabling this endpoint for your application and setting the sensitivity of this endpoint respectively.

There are many more ways of customizing Spring Boot's Actuator. Spring Boot allows us to customize all of the Actuator. That is why Spring Boot is opinionated.

Many of the Actuator endpoints expose sensitive data, so you have to protect these endpoints from any unwanted activity. Spring Boot allows you to secure these Actuator endpoints. In the next section, let's see how to make these Actuator endpoints secure.