Spring Boot starter

Spring Boot推出后取得了巨大的成功,方便快速上手,还附带了很多product-ready特性。对微服务架构也很友好。

随着Spring Boot一起推出的还有Spring Boot众多的starter。当你喜欢使用某些组件时,试试starter,只需要使用构建工具引用一个依赖,你就可以快速获得它。

了解starter之后你也可以自己实现自己的starter,以便其他同事快速使用公司内部特有的组件。

spring.factories

每个starter都有一个spring.factories文件,位于META-INF目录下。

随便开一个文件来看

可以看到很多@ConditionalOnXXX的注解,这就是关键的地方。

条件注解

在引入starter后可能会提供一些暴露给上下文的bean,但是有时候又是不需要的,比如用户自己提供了对应的bean,或者用户通过配置关闭了部分功能。

主要的条件有这几种

  • OnBeanCondition
  • OnClassCondition
  • OnExpressionCondition
  • OnJavaCondition
  • OnJndiCondition
  • OnPropertyCondition
  • OnResourceCondition
  • OnWebApplicationCondition
  • OnMissingBean
  • OnProperty

当对应条件满足时,响应的代码才会执行。

比如starter中并没有引入对应的具体实现,那么这种情况下就不应该实例化相应的配置和实例。

比如CassandraDataAutoConfiguration,在没有Cassandra对应实现情况下就应该直接忽略

如果用户自己配置了CassandraMappingContext,那么starter中就不应该再提供任何MappingContext配置

ConditionalOnExpression我一直觉得是一个很有用处的配置,使用SpEL基本上能够实现所有情况判断,但是我并没有看到任何一个用这个的例子。

活用这些配置,可以轻易创造出很多灵活的starter。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值