spring boot自动装配原理@EnableAutoConfiguration

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring boot自动装配原理@EnableAutoConfiguration相关的知识,希望对你有一定的参考价值。

参考技术A 1、spring boot启动会加载大量的自动配置类:(在下面的spring.factories文件中)

2、通过@ConditionalOnXXX判断我们是否导入了相关的功能(就是pom文件中的starter),如果导入了,就会自动配置。

4、给容器中添加自动配置类的时候,会从XXXProperties类中获取某些属性。我们只需要在配置文件中指定这些属性即可,如果没指定就会用默认值。
XXXA
比如:server.port

最后,通过配置:debug=true
可以查看失效和未生效的类(spring.factories文件中的)

玩转 Spring Boot 原理篇(自动装配前凑之自定义Stater)

的 pom 文件中可以看出,mybatis-spring-boot-starter 包会自动引入 mybatis-spring-boot-autoconfigure 以及 mybatis 相关依赖包。

SqlSessionFactory Exception logger.debug( encoding= xmlns:xsi= xsi:schemaLocation= <modelVersion> <groupId>org.example</groupId> <artifactId>game-spring-boot-starter</artifactId> <version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version> </parent> <properties> <maven.compiler.source> <maven.compiler.target> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> </dependencies>* 猜数游戏Service**/ String number) gen = ( gen == number ? gen + : + gen + * 配置类**/ @ public GameService gameService() @ private GameService gameService; @ public String say(@RequestParam(name = com.example.demo_jpa;org.springframework.boot.SpringApplication;org.springframework.boot.autoconfigure.SpringBootApplication; SpringApplication.run(GameApplication.class, args);


4. 玩一玩


运行GameApplication,浏览器访问 http://localhost:8080/guess?number=300,效果如下


至此,自定义 Spring Boot 启动依赖就完成了,其主要是 GameAutoConfiguration 配置类的立下的功劳。

5. 例行回顾

本文主要是一起探讨如何完成 Spring Boot 自定义 Starter,从代码层面先感受一下 Spring Boot 自动装配的能力。


Spring Boot 如何实现自动装配的呢?通过本次自定义 Stater,脑海中有一些大胆的猜测,猜测跟 XxxAutoConfiguration 以及 spring.factories 文件有点关系,也大胆的构思的一张图,留了一些空白,相信通过后续的源码解读,会把空白填上。

另外,本篇是 Spring Boot 自动装配的前凑篇,至于是如何实现的呢?下次将顺着主线往下捋,感兴趣的可以顺着我画的这个流程图先自己体会体会自动装配的思想。

一起聊技术、谈业务、喷架构,少走弯路,不踩大坑,会持续输出更多精彩分享,欢迎关注,敬请期待!

以上是关于spring boot自动装配原理@EnableAutoConfiguration的主要内容,如果未能解决你的问题,请参考以下文章

spring boot自动装配原理@EnableAutoConfiguration

Spring Boot 自动装配定义与自定义starter原理,及如何实现自定义装配

Spring Boot 自动装配定义与自定义starter原理,及如何实现自定义装配

从源码中理解Spring Boot自动装配原理

深度剖析Spring Boot自动装配机制实现原理

spring boot 自动装配的原理