SpringBoot自动配置(待完善)

news/2024/11/29 3:49:53/

@EnableAutoConfiguration

开启自动解析配置类

  • 根据 classpath 下的依赖自动配置
  • 条件注解自动配置
  • 配置文件配置属性spring.autoconfigure.*
  • 自定义类加@Configuration注解

ImportSelector和DeferredImportSelector

都可以实现配置类分组, DeferredImportSelector可以实现延迟加载配置类上bean

条件注解

  1. ConditionalOnBean:是否存在某个某类或某个名字的Bean
  2. ConditionalOnMissingBean:是否缺失某个某类或某个名字的Bean
  3. ConditionalOnSingleCandidate:是否符合指定类型的Bean只有一个
  4. ConditionalOnClass:是否存在某个类
  5. ConditionalOnMissingClass:是否缺失某个类
  6. ConditionalOnExpression:指定的表达式返回的是true还是false
  7. ConditionalOnJava:判断Java版本
  8. ConditionalOnJndi:JNDI指定的资源是否存在
  9. ConditionalOnWebApplication:当前应用是一个Web应用
  10. ConditionalOnNotWebApplication:当前应用不是一个Web应用
  11. ConditionalOnProperty:Environment中是否存在某个属性
  12. ConditionalOnResource:指定的资源是否存在
  13. ConditionalOnWarDeployment:当前项目是不是以War包部署的方式运行
  14. ConditionalOnCloudPlatform:是不是在某个云平台上

也可以利用@Conditional来自定义条件注解。

引入starter开启自动配置

例如引入spring-boot-starter-web依赖, 会自动解析Tomcat配置类, 利用条件注解实现

    @Configuration@ConditionalOnClass({Servlet.class, Tomcat.class, UpgradeProtocol.class})@ConditionalOnMissingBean(value = {ServletWebServerFactory.class},search = SearchStrategy.CURRENT)public static class EmbeddedTomcat {public EmbeddedTomcat() {}@Beanpublic TomcatServletWebServerFactory tomcatServletWebServerFactory() {return new TomcatServletWebServerFactory();}}


http://www.ppmy.cn/news/1324097.html

相关文章

3.系统状态检测命令

1.ifconfig 用于获取网卡配置与网络状态等信息 [rootlocalhost ~]# ifconfig2.uname 用于查看系统内核版本与系统架构等信息 [rootlocalhost ~]# uname -a操作系统 主机名称 内核的版本号 打包时间 系统架构 主板架构 软件版本 3.uptime 用于查看系统的负载信息,相对于t…

【十进制与二进制如何转换?推荐一个超好用的公式编辑器】

在计算机科学和电子工程中,二进制是一种非常重要的数字系统,因为它在数字处理和数据传输中被广泛使用。因此,理解如何将十进制数转换为二进制数是非常重要的。 可以使这个计算过程更加简单和快速。而且还可以用于其他数学方程式的编写和编辑。…

跨越边界,探索未来:给业务研发、测试研发、运维研发的职业发展建议

我在和我的下属和朋友们交流的时候,会经常提到我的 1-3-5-7-10 的“谬论”,具体的含义就是作为一个技术人,我们需要在职业生涯的每个关键阶段(一年、三年、五年、七年、十年),清晰地认识自己的定位和能力水…

外汇天眼:如何避免网络交友投资诈骗,注意这5种迹象就对了!

现在由于网络与通讯科技日渐发达,我们的生活型态与习惯出现极大的变化,无论是购物、交友、投资,都可以靠着一支手机满足各种需求。 然而,这种趋势也助长了电信诈骗的发展,层出不穷的假交友、假投资犯罪造成许多民众莫大…

Kotlin中的委托

在Kotlin中,委托是一种强大的设计模式,它允许一个类将其一些职责委托给另一个类。这种机制通过关键字by来实现。委托有助于代码的重用,降低耦合性,并提供更清晰的类设计。在Kotlin中,有两种主要类型的委托:…

MyBatis-Plus之内置接口Service接口Mapper接口

目录 1.Service接口 1.1.Save 1.2.SaveOrUpdate 1.3.Remove 1.4.Update 1.5.Get 1.6.List 2.Mapper接口 2.1.Insert 2.2.Delete 2.3.Update 2.4.Select 1.Service接口 Service CRUD 接口说明: 通用 Service CRUD 封装IService接口,进一步封…

Python通过HTTP代理进行数据传输

在Python中,HTTP代理是一种常用的技术,用于控制和修改HTTP请求和响应。通过使用HTTP代理,我们可以更好地控制网络请求的行为,提高安全性、隐私性和效率。下面我们将详细介绍如何在Python中使用HTTP代理进行数据传输。 一、设置HT…

Python进程、多进程、线程以及同步和死锁

一 传统编程的缺陷 传统编程的弊端: # 必须按照顺序执行,多个任务无法同时在还行 import timedef sing():for i in range(5):print("sing: hero")time.sleep(1) # 每唱一次,等1秒再唱def dance():for i in range(5):print(…