7a03cd5a55
The "Move Core Access API" refactoring (gh-17847) relocated MethodSecurityMetadataSourceAdvisor and MethodSecurityInterceptor from spring-security-core, a mandatory dependency of spring-security-config, into the new spring-security-access module, which spring-security-config only depends on optionally. GlobalMethodSecuritySelector (backing the deprecated @EnableGlobalMethodSecurity) and ReactiveMethodSecuritySelector (backing @EnableReactiveMethodSecurity(useAuthorizationManager = false)) still unconditionally import configuration that constructs those classes: MethodSecurityMetadataSourceAdvisorRegistrar in proxy mode, GlobalMethodSecurityConfiguration in both proxy and aspectj mode, and ReactiveMethodSecurityConfiguration for the legacy reactive path. Applications that use any of these deprecated configuration paths without explicitly adding spring-security-access now fail at startup with a confusing NoClassDefFoundError deep inside Spring's configuration-processing machinery, instead of an actionable message. @EnableMethodSecurity and @EnableReactiveMethodSecurity's default (AuthorizationManager-based) mode, the non-deprecated replacements, never reference these classes and are unaffected either way. Add a ClassUtils.isPresent check to both selectors so that, whenever a legacy configuration path that needs it is chosen (proxy mode, aspectj mode, or the legacy reactive interceptor), a missing spring-security-access dependency now fails fast with a clear IllegalStateException that names the missing dependency and points to the supported alternative, rather than a NoClassDefFoundError. This preserves gh-17847's footprint-reduction intent: the check only runs for the deprecated legacy annotations, so the majority of applications using @EnableMethodSecurity see no change in behavior or dependencies. @EnableGlobalMethodSecurity remains deprecated; this change adds no new investment in it beyond giving existing users of it a clear diagnostic instead of a confusing crash. Closes gh-19441 Signed-off-by: jyx-07 <s25069@gsm.hs.kr>