目录
为什么会要用springboot
1、之前
- 搭建一个 WEB 项目需要集成很多组件,比如sping、 spring mvc 、mybatis框架、Tomcat 这种 WEB 容器、日志框架、连接数据库要选择连接池等等,特别麻烦。而且几十个微服务重复这些脚手架操作,简直是灾难.
需要:
- 安装tomcat、注意版本和当前的spring版本是否兼容
- 引入spring各个模块的依赖
- web.xml配置servlet、拦截规则、字符编码器等等
- applicationContext.xml,springmvc.xml 等一大堆xml配置文件文件
参考 快速搭建SSM项目_ssm项目搭建_秋泠鸢的博客-CSDN博客
2、现在
- 为了简化 Spring 应用的初始项目搭建以及开发过程,发挥它开箱即用的特质。SpringBoot 为 Java 企业级开发的一站式解决方案。springboot中最重要的特性自动装配,很好的解决了以上问题。
- 多个微服务之间再通过 Spring 全家桶里面的 SpringCloud 进行管理,比如服务注册、服务发现等等。
springboot优点
1、springboot集成了大量常用的第三方库配置,所有你想集成的常用框架,它都有对应的组件支持,例如 Redis、MongoDB、Jpa、kafka,Hakira 等等。SpringBoot 应用中这些第三方库几乎可以零配置地开箱即用,大部分的 SpringBoot 应用都只需要非常少量的配置代码,开发者能够更加专注于业务逻辑
1、自动装配:快速搭建独立运行的Spring项目以及与主流框架集成,简化开发
2、starter:提供一系列的starter来简化Maven配置,将常用的依赖分组并将其合并到一个依赖中,这样就可以一次性将相关依赖添加到Maven中
(1)快速创建独立运行的Spring项目以及与主流框架集成
(2)使用嵌入式的Servlet容器,应用无需打成WAR包
(3)Starters自动依赖与版本控制
(4)大量的自动配置,简化开发,也可修改默认值
(5)无需配置XML,无代码生成,开箱即用
(6)准生产环境的运行时应用监控
(7)与云计算的天然集成
springboot四大核心
- 自动装配:
- 起步依赖:场景启动器(starter)
- Actuator:健康检查等监控
- 命令行界面
自动装配介绍
1、自动装配作用是什么
springboot的自动装配实际上就是为了从spring.factories文件中获取到对应的需要进行自动装配的类,并生成相应的Bean对象,然后将它们交给spring容器来帮我们进行管理。
2、自动装配原理
SpringBoot所有自动配置类都是在启动的时候进行扫描并加载,通过spring.factories可以找到自动配置类的路径,但是不是所有存在于spring.factories中的配置都进行加载,而是通过@ConditionalOnClass注解进行判断条件是否成立(只要导入相应的stater,条件就能成立),如果条件成立则加载配置类,否则不加载该配置类。
【146期】面试官:你能说出SpringBoot自动装配的原理吗
springboot starter是什么
1、starter作用
引入模块所需的相关jar包,自动装配各自模块所需的属性。使用springboot后集成常用的第三方框架变得非常简单了。
2、比如:我们想搭建java web框架
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
3、starter原理
@SpringBootApplication注解
1、@SpringBootConfiguration
这个注解包含了@Configuration,@Configuration里面又包含了一个@Component注解,也就是说,这个注解标注在哪个类上,就表示当前这个类是一个配置类,而配置类也是spring容器中的组件
2、@EnableAutoConfiguration
开启自动配置功能
- @AutoConfigurationPackage
主配置类的包以及子包里面的所有组件扫描并加载到spring的容器中
- @Import(AutoConfigurationImportSelector.class)
将需要自动装配的类以全类名的方式返回,需要自动装配的类,通过查找所有在META-INF路径下的spring.factories文件获得。
3、@ComponentScan
这个注解的作用就是扫描当前包及子包的注解
参考:
【146期】面试官:你能说出SpringBoot自动装配的原理吗
springboot项目搭建