首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Spring Boot 自定义starter

    ,如果各种字符集的实现都有第三方来做,那么在制作一个通用的starter时,就会有class不在classpath下的情况,那么就会用到@ConditionalOnClass的注解来判断是否在classpath...但本人在制作starter时,最初是把@ConditionalOnClass注解加入到方法上,这样就可以一个XXXAutoConfiguration类注入很多实现该接口的服务,但实际往往与理想相悖。...通过测试发现@ConditionalOnClass在类上面是可以实现classpath下类是否存在的检测的,如果不存在,则不注入,如果存在,则进行相关的注入操作,但为什么@ConditionalOnClass...通过对Spring Boot org.springframework.boot.autoconfigure包中源码的阅读,得知 SpringBoot 其实也是只是把@ConditionalOnClass...注解,那么最好的解决办法就是像这样写一些静态内部类,然后再把公共类进行自动注入,这样,当加载公共类时,就会去加载这些静态的内部类,然后就会根据@ConditionalOnClass的条件,是否进行自动注入了

    1K50

    聊聊springboot自动装配出现的TypeNotPresentExceptionProxy异常排查

    ApolloRefreshProperties.class}) public class ApolloRefreshAutoConfiguration { @Bean @ConditionalOnMissingBean @ConditionalOnClass...因为他们大部分业务都跑在jdk8,冒然升级成jdk11,也不知道会不会因为了解决一个问题,而引入其他问题 2 问题排查 因为这个starter的自动装配配置的内容相对简单,基于老司机的第六感,问题大概率是出现在@ConditionalOnClass...这注解上,于是点开@ConditionalOnClass,他的注解上有如下提示 他的大意是,可以在@Configuration classes上安全地指定value(),因为在加载类之前会使用ASM...如果非要用方法注解,建议使用ConditionalOnClass里面的name字段 于是我们听官方的建议,将starter调整如下 @Configuration @EnableConfigurationProperties...spring-projects/spring-boot/issues/27846 https://github.com/spring-projects/spring-boot/issues/17282 3 总结 首先如果用 @ConditionalOnClass

    38730

    聊聊springboot自动装配出现的TypeNotPresentExceptionProxy异常排查

    ApolloRefreshProperties.class})public class ApolloRefreshAutoConfiguration { @Bean @ConditionalOnMissingBean @ConditionalOnClass...因为他们大部分业务都跑在jdk8,冒然升级成jdk11,也不知道会不会因为了解决一个问题,而引入其他问题问题排查因为这个starter的自动装配配置的内容相对简单,基于老司机的第六感,问题大概率是出现在@ConditionalOnClass...这注解上,于是点开@ConditionalOnClass,他的注解上有如下提示图片他的大意是,可以在@Configuration classes上安全地指定value(),因为在加载类之前会使用ASM解析注释元数据...如果非要用方法注解,建议使用ConditionalOnClass里面的name字段于是我们听官方的建议,将starter调整如下@Configuration@EnableConfigurationProperties...spring-projects/spring-boot/issues/27846https://github.com/spring-projects/spring-boot/issues/17282总结首先如果用 @ConditionalOnClass

    38740
    领券