SpringBoot如何通过@Import注解导入自动配置类的内部类?
SpringBoot手动导入自动配置内部类不生效的解决方案
- 首先修正基础语法错误:
@Import注解需要传入类对象,你当前的写法缺失了.class后缀,正确的基础写法为:@Import(AopAutoConfiguration.ClassProxyingConfiguration.class) - 校验条件注解匹配规则:SpringBoot官方自动配置的内部类普遍带有条件注解,以
AopAutoConfiguration.ClassProxyingConfiguration为例,它被@ConditionalOnProperty(prefix = "spring.aop", name = "proxy-target-class", havingValue = "true", matchIfMissing = true)修饰,如果你手动在配置文件中设置了spring.aop.proxy-target-class=false,该配置类会直接跳过注册。如果不需要走条件判断强制生效,可以直接手动注册该配置类对应的目标Bean,绕开自动配置逻辑:@Bean public InfrastructureAdvisorAutoProxyCreator infrastructureAdvisorAutoProxyCreator() { return new InfrastructureAdvisorAutoProxyCreator(); } - 非静态内部类需搭配外部类导入:如果你导入的是自定义的非静态内部配置类,需要同时导入外部配置类才能完成实例化,写法参考:
注:SpringBoot官方提供的自动配置内部类均为静态内部类,无需额外导入外部类。@Import({AopAutoConfiguration.class, AopAutoConfiguration.ClassProxyingConfiguration.class}) - 简化导入方案:如果不想逐个处理内部类的依赖和条件,可直接导入顶层自动配置类,Spring会自动匹配条件加载对应符合要求的内部配置类,比如直接导入
AopAutoConfiguration.class即可完成AOP相关配置的按需加载。
内容的提问来源于stack exchange,提问作者klb
相关产品推荐
相关产品推荐

