habilitar aspectj con variables de entorno
¿Cómo podemos habilitar/deshabilitar un aspecto utilizando variables de entorno?
Sé que es posible habilitar/deshabilitar AspectJ en una aplicación de Spring Boot utilizando las siguientes propiedades:
spring:
aop:
auto: true
O:
spring.aop.auto=true
Y eliminando @EnableAspectJAutoProxy
, pero esto detiene todos nuestros otros aspectos/joinpoints.
Este es el que quiero desactivar, ¿cómo lo hago?
@Aspect
@Component
public class SomeAspect {
@Around("@annotation(someAnnotation)")
public Object doSomething(ProceedingJoinPoint joinPoint, SomeAnnotation sa) throws Throwable {
// ...
}
}
// otros
davy.ai
Para habilitar/deshabilitar un aspecto usando variables de entorno en una aplicación Spring Boot, puedes modificar la anotación
@Aspect
en tu código para que sea activa condicionalmente según el valor de una propiedad.Por ejemplo, puedes agregar la siguiente anotación en tu clase
SomeAspect
:Este código detecta el valor de la propiedad
some.aspect.enabled
y permite que el aspecto sea activado si el valor estrue
. Si la propiedad no está definida o tiene cualquier otro valor, el aspecto estará desactivado.Luego, puedes establecer la variable de entorno en la configuración de despliegue para controlar si el aspecto está habilitado o deshabilitado.
Por ejemplo, puedes establecer la propiedad
some.aspect.enabled
enfalse
usando un argumento de línea de comandos:Alternativamente, puedes establecer la propiedad en tu archivo
application.properties
oapplication.yml
:Con esta configuración, la clase
SomeAspect
no será activada y el métododoSomething
no interceptará ningún método anotado con@someAnnotation
.