首页 > 其他分享 >SpringBoot——自定义自动配置与起步依赖

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

时间:2023-03-17 23:34:34浏览次数:41  
标签:起步 SpringBoot 自定义 spring 配置 自动 注解 class

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 应用程序是通过传统的War方式部署的,而非内嵌容器
@ConditionalOnWebApplication 应用程序是一个Web应用程序
@ConditionalOnNotWebApplication 与前者相反,应用程序不是一个Web应用程序

标签:起步,SpringBoot,自定义,spring,配置,自动,注解,class
From: https://www.cnblogs.com/atwood-pan/p/17228628.html

相关文章