tutorial propiedades example context application java spring spring-boot application-settings

java - example - ¿Se puede activar/desactivar un arranque de resorte @RestController usando propiedades?



spring boot tutorial (1)

Encontré una solución simple usando @ConditionalOnExpression :

@RestController @ConditionalOnExpression("${my.controller.enabled:false}") @RequestMapping(value = "foo", produces = "application/json;charset=UTF-8") public class MyController { @RequestMapping(value = "bar") public ResponseEntity<String> bar( return new ResponseEntity<>("Hello world", HttpStatus.OK); } }

Con esta anotación agregada, a menos que tenga

my.controller.enabled=true

en mi archivo application.properties , el controlador no se iniciará en absoluto.

También puede usar el más conveniente:

@ConditionalOnProperty("my.property")

Que se comporta exactamente como arriba; si la propiedad está presente y es "true" , el componente se inicia; de lo contrario, no es así.

Se le da una aplicación de arranque de resorte "estándar" con @RestController , por ejemplo

@RestController @RequestMapping(value = "foo", produces = "application/json;charset=UTF-8") public class MyController { @RequestMapping(value = "bar") public ResponseEntity<String> bar( return new ResponseEntity<>("Hello world", HttpStatus.OK); } }

¿Hay alguna anotación o técnica que evite que el punto final comience en absoluto si / a menos que exista o no una determinada propiedad de la aplicación?

Nota: Probar una propiedad dentro del método y la explosión no es una solución, porque el punto final existirá.

No me importa la granularidad: es decir, activar / desactivar solo un método o toda la clase son buenos.

Como un perfil no es una propiedad, el control a través de perfiles no resuelve mi problema.