Difference between Spring controller and Endpoint

sidgate picture sidgate · Mar 15, 2016 · Viewed 8.3k times · Source

Spring boot actuator provides some endpoints like health, metrics, info. It also allows us to write our own custom endpoints.

I have a requirement where I need to expose some Dropwizard metrics stats as an endpoint. Latest Spring-boot does support dropwizard metrics but it does not fit into my requirement, so I am planning to have my own web endpoint /stats

But now I am not able to decide whether it should be a normal Controller or a custom actuator Endpoint. What's the difference between these two terms?

PS: question does seem opinion base, but the answer should be simple enough.

Answer

Manali Bhosale picture Manali Bhosale · Mar 15, 2016

Endpoints are a more specific or peculiar version of a Controller.

Rather than rely on a view (such as JSP) to render model data in HTML, an endpoint simply returns the data to be written directly to the body of the response(Similar to doing @ResponseBody in Controller).

Actuator Endpoint is a better option because of the following reasons :

  1. Endpoints are meant to perform the highly specific task of printing your Object(Json) on HTTP which is exactly what you want to do here.
  2. To separate monitor-n-manage code from your application-specific code.
  3. To keep things cleaner and cohesive