Skip to content

Commit 74155e3

Browse files
committed
Do not invoke AspectJ hints generation if AspectJ is not present
See gh-28711
1 parent 564f33d commit 74155e3

File tree

1 file changed

+23
-3
lines changed

1 file changed

+23
-3
lines changed

Diff for: spring-aop/src/main/java/org/springframework/aop/aspectj/annotation/AspectJBeanFactoryInitializationAotProcessor.java

+23-3
Original file line numberDiff line numberDiff line change
@@ -28,22 +28,42 @@
2828
import org.springframework.beans.factory.aot.BeanFactoryInitializationCode;
2929
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
3030
import org.springframework.lang.Nullable;
31+
import org.springframework.util.ClassUtils;
3132

3233
/**
3334
* {@link BeanFactoryInitializationAotProcessor} implementation responsible for registering
3435
* hints for AOP advices.
3536
*
3637
* @author Sebastien Deleuze
38+
* @author Stephane Nicoll
3739
* @since 6.0.11
3840
*/
3941
class AspectJBeanFactoryInitializationAotProcessor implements BeanFactoryInitializationAotProcessor {
4042

43+
private static final boolean aspectJPresent = ClassUtils.isPresent(
44+
"org.aspectj.lang.annotation.Pointcut", AspectJBeanFactoryInitializationAotProcessor.class.getClassLoader());
45+
4146
@Nullable
4247
@Override
4348
public BeanFactoryInitializationAotContribution processAheadOfTime(ConfigurableListableBeanFactory beanFactory) {
44-
BeanFactoryAspectJAdvisorsBuilder builder = new BeanFactoryAspectJAdvisorsBuilder(beanFactory);
45-
List<Advisor> advisors = builder.buildAspectJAdvisors();
46-
return advisors.isEmpty() ? null : new AspectContribution(advisors);
49+
if (aspectJPresent) {
50+
return AspectDelegate.processAheadOfTime(beanFactory);
51+
}
52+
return null;
53+
}
54+
55+
/**
56+
* Inner class to avoid a hard dependency on AspectJ at runtime.
57+
*/
58+
private static class AspectDelegate {
59+
60+
@Nullable
61+
private static AspectContribution processAheadOfTime(ConfigurableListableBeanFactory beanFactory) {
62+
BeanFactoryAspectJAdvisorsBuilder builder = new BeanFactoryAspectJAdvisorsBuilder(beanFactory);
63+
List<Advisor> advisors = builder.buildAspectJAdvisors();
64+
return advisors.isEmpty() ? null : new AspectContribution(advisors);
65+
}
66+
4767
}
4868

4969

0 commit comments

Comments
 (0)