SpringBoot——自定义自动配置与起步依赖

SpringBoot为我们提供了灵活强大的自动配置与起步依赖功能,接下来我们参考其实现原理,实现专属于我们自己的自动配置与起步依赖。

不仅如此,我们对其稍作修改,让它适用于非SpringBoot环境,甚至是低版本的Spring Framework环境

1.自动配置

在编写自己的自动配置之前,我们先来看一下SpringBoot自动配置类的实现原理。

SpringBoot可以根据CLASSPATH、配置项等条件自动进行常规配置,省去了我们自己手动把一模一样的配置复制来复制去的麻烦。这样大大提升了开发效率!

在这之前,我们已经看到过@SpringBootApplication注解了,查看这个注解,可以发现它上面添加了一个@EnableAutoConfiguration,基于这个注解就可以开启自动配置功能。

这两个注解上都有exclude属性,我们可以在其中排除一些不想启用的自动配置类。

如果不想启用自动配置功能,也可以在配置文件中配置spring.boot.enableautoconfiguration=false,关闭该功能。

1.1自动配置的实现原理

自动配置类其实就是添加了@Configuration的普通Java配置类,它利用Spring Framework 4.0加入的条件注解@Conditional来实现“根据特定条件启用相关配置类”,注解中传入的Condition类就是不同条件的判断逻辑。SpringBoot内置了很多条件注解,如下表所示:

条件注解 生效条件
@ConditionalOnBean 存在特定名称、特定类型、特定泛型参数或带有特定注解的Bean
@ConditionalOnMissingBean 与前者相反,不存在特定的Bean
@ConditionalOnClass 存在特定的类
@ConditionalOnMissingClass 与前者相反,不存在特定类
@ConditionalOnCloudPlatform 运行在特定的云平台上,截止2.6.3版本,代表云平台的枚举类支持无云平台,可以通过spring.main.cloud-platform配置强制使用的云平台
@ConditionalOnExpression 指定的SpEL表达式为真
@ConditionalOnJava 运行在满足条件的Java上,可以比指定版本新,也可以比指定版本旧
@ConditionalOnJndi 指定的JNDI位置必须存在一个,如没有指定,则需要存在InitalContext
@ConditionalOnProperty 属性值满足特定条件,比如给定的属性值都不能为false
@ConditionalOnResource 存在特定资源
@ConditionalOnSingleCandidate 当前上下文中,特定类型的Bean有且仅有一个
@ConditionalOnWarDeployment <
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值