Along to #25151, this issue intend to provide a spring.spel.ignore
flag to disable SpEL support in a way that prevent it to be compiled intro GraalVM native images.
For the record this allows to reduce native image size by 1.4M, RSS memory consumption by 2M and build time by 5.5s with Java 8.
Usage of SpEL support with the flag enabled should trigger a proper exception with a message explaining how to re-enable it.
The work done on spring-graalvm-native substitutions has allows to identify a first set of classes where SpEL support should be removed:
- Remove EventExpressionEvaluator
usage from org.springframework.context.event.EventListenerMethodProcessor
and org.springframework.context.event.ApplicationListenerMethodAdapter
- Remove beanFactory.setBeanExpressionResolver(new StandardBeanExpressionResolver(beanFactory.getBeanClassLoader());
from org.springframework.context.support.AbstractApplicationContext
Such flag could also be used on Spring Boot side as well if needed.
Comment From: matthenry87
If we want to use things like Spring Security's @PreAuth annotation, is it still possible to omit this flag and use SpEL in an application compiled into a native image?