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.
Actuator endpoints let you monitor and interact with your application. Spring Boot includes a number of built-in endpoints and lets you add your own. For example, the health endpoint provides basic application health information. Each individual endpoint can be enabled or disabled.
@Controller is used to mark classes as Spring MVC Controller. @RestController annotation is a special controller used in RESTful Web services, and it's the combination of @Controller and @ResponseBody annotation. It is a specialized version of @Component annotation.
Spring Controller annotation is typically used in combination with annotated handler methods based on the @RequestMapping annotation. It can be applied to classes only. It's used to mark a class as a web request handler. It's mostly used with Spring MVC applications.
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 :
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With