SpringBoot原理分析

SpringBoot原理分析

1.  目标

  • 理解SpringBoot原理-起步依赖
  • 理解SpringBoot自动配置

2. 讲解

2.1 起步依赖

我们可以打开pom.xml中的parent,并查看spring-boot-starter-parent信息。

从上面的spring-boot-dependencies的pom.xml中可以看出,坐标的版本,依赖管理,插件管理已经预先定义好了。SpringBoot工程继承Spring-boot-starter-parent后,已经锁定了版本等配置。起步依赖的作用是进行依赖传递 。用啥取啥,随用随取即可。我们开发中彻底不用关心:jar包的版本、依赖等问题了,大大降低版本冲突,版本过期,更新一个jar一下就需要升级一个tree的jar包。

相当于我们之前学习的过程中创建的父工程,在之前创建的父工程中,其中一个功能是用来统一管理jar包。这里的父工程其实作用是一样的。

2.2 自动配置

(1)@SpringBootApplication

该注解是一个组合注解,包括如下注解

  • @SpringBootConfiguration:与之前@Configuration注解一样,声明为一个配置类
  • @ComponentScan:spring IoC容器的扫描包,默认扫描引导程序下的包以及子包,如果我们写的程序不在该包范围内,可以通过该注解指定。
  • @EnableAutoConfiguration:springboot实现自动化配置的核心注解。

(2)@SpringBootConfiguration

通过这段我们可以看出,在这个注解上面,又有一个@Configuration注解。通过上面的注释阅读我们知道:这个注解的作用就是声明当前类是一个配置类,然后Spring会自动扫描到添加了@Configuration的类,并且读取其中的配置信息。而@SpringBootConfiguration是来声明当前类是SpringBoot应用的配置类,项目中只能有一个。所以一般我们无需自己添加。

(3)@EnableAutoConfiguration

@EnableAutoConfiguration告诉Spring Boot基于你所添加的依赖,去“猜测”你想要如何配置Spring。比如我们引入了spring-boot-starter-web,而这个启动器中帮我们添加了tomcatSpringMVC的依赖。此时自动配置就知道你是要开发一个web应用,所以就帮你完成了web及SpringMVC的默认配置了!

自动配置:自己一般不用修改配置,默认的配置都给配好了。

3. 小结

  • 工程继承了spring-boot-starter-parent工程,spring-boot-starter-parent继承了spring-boot-dependencies,spring-boot-dependencies实现了jar包管理和版本锁定。工程引入spring-boot-starter-web依赖,该工程又依赖了其他web所需的jar包,maven依赖有传递性。
  • 通过@SpringBootApplication注解完成自动配置,会将当前类作为一个配置类,并且会根据我们所引入的依赖猜测我们的配置,并实现自动配置。
已标记关键词 清除标记
相关推荐
<p> <b><span style="background-color:#FFE500;">【超实用课程内容】</span></b> </p> <p> <br /> </p> <p> <br /> </p> <p> 本课程内容包含讲解<span>解读Nginx的基础知识,</span><span>解读Nginx的核心知识、带领学员进行</span>高并发环境下的Nginx性能优化实战,让学生能够快速将所学融合到企业应用中。 </p> <p> <br /> </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <b><br /> </b> </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <b><span style="background-color:#FFE500;">【课程如何观看?】</span></b> </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> PC端:<a href="https://edu.csdn.net/course/detail/26277"><span id="__kindeditor_bookmark_start_21__"></span></a><a href="https://edu.csdn.net/course/detail/27216">https://edu.csdn.net/course/detail/27216</a> </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> 移动端:CSDN 学院APP(注意不是CSDN APP哦) </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> 本课程为录播课,课程永久有效观看时长,大家可以抓紧时间学习后一起讨论哦~ </p> <p style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <br /> </p> <p class="ql-long-24357476" style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <strong><span style="background-color:#FFE500;">【学员专享增值服务】</span></strong> </p> <p class="ql-long-24357476" style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <b>源码开放</b> </p> <p class="ql-long-24357476" style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化 </p> <p class="ql-long-24357476" style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> 下载方式:电脑登录<a href="https://edu.csdn.net/course/detail/26277"></a><a href="https://edu.csdn.net/course/detail/27216">https://edu.csdn.net/course/detail/27216</a>,播放页面右侧点击课件进行资料打包下载 </p> <p> <br /> </p> <p> <br /> </p> <p> <br /> </p>
©️2020 CSDN 皮肤主题: 精致技术 设计师:CSDN官方博客 返回首页