SpringBoot 详细解读

一、简介:

Spring Boot简化spring应用开发,创建了一个独立的产品级别的开发框架

背景:

老框架笨重的开发繁琐的配置,低下的开发效率,复杂的不是流程,第三方技术集成难度大

解决:

    Spring全家桶时代

    Spring Boot->J 2 E E 解决方案

    Spring Cloud ->分布式整体解决方案


开发与框架关系图

优点:


Spring Boot优点

微服务:

微服务架构风格(服务微分),一个应用应该是一组小型服务;可以通过HTTP方式互通;

每个功能元素最终都是一个可独立替换和独立升级的软件单元

单体应用与微服务应用

Microservices:https://martinfowler.com/articles/microservices.html#MicroservicesAndSoa


官网架构图




--项目搭建

Spring Boot 搭建环境

jdk8,java环境,maven,maven环境,idea

MAVEN环境:

   给maven的settings.xml配置文件的propiles标签添加:

百度 ‘maven的<profiles>标签‘   作用: 根据profile激活方式读取配置,存在默认

IDEA设置:

配置maven仓库和settings.xml

导入依赖spring boot 相关的依赖:


依赖

编写主程序;启动Spring Boot 应用:


启动类

编写相关的controller,servies


controller


效果

简化部署


pom.xml

执行maven打包命令,将程序打包


效果

jar包:只需要运行环境就可以跑起来的程序;

如下图来到jar包目录下 cmd 执行java -jar ***.jar


跑起来的jar包

Hello World 探究


POM文件   

1,父项目


helloworld父项目

ctrl+点击


他的父项目是这个

通过这个真正管理Spring Boot 应用里面的所有依赖版本

Spring Boot 版本仲裁中心;以后我们导入依赖就不需要写版本了(没有在dependencies管理下的来需要声明版本号)

2,导入的starter-web依赖

spring-boot-starter:spring的场景启动器;帮我们导入了web开发正常运行所依赖的所有组件

Spring Boot 将所有的功能场景都抽取出来,做成了一个个的starters容器,只需要在项目这里面引入这些相关starter,相关的所有的依赖就会

导入进来。要用什么功能就导入什么场景的启动器


.java文件

@SpringBootApplication 注解:Spring Boot 应用标注在某个类上说明这个类是Spring Boot的主配置类,

Spring Boot就应该运行这个类的main方法来启动SpringBoot 应用;


@SpringBootApplication注解内部:


SpringBootApplication内

@SpringBootConfiguration :Spring Boot的配置类;标注上表示这是配置类

                   子注解 :  @Configuration : 配置类标注这个注解

                                   配置类 ----- 配置文件;配置类也是容器中的一个组件; @Component

配置注解

@EnableAutoConfiguration :开启自动配置功能;以前spring框架配置的东西,Spring Boot 自动配置,我们只需要开启即可;

EnableAutoConfiguration 

            @Import({AutoConfigurationImportSelector.class}) :

                                        @improt(给容器中导入组件)  

                                        AutoConfigurationImportSelector :导入哪些组件的选择器;将所有需要组件以全限定名(包路径.类名)的形式导入容器;会给容器导入非常多的自动配置类(xxx.xxx.xxxAutoConfiguration);

                                        作用:为容器导入场景所需要的所有组件;

有了这些配置类,还有加载这些配置类的选择器,免去了我们手动编写配置注入功能组件等的工作

SpringFactoriesLoader.loadFactoryNames(EnableAutoConfiguration.class,ClassLoader beanClassLoader) 通过这些加载配置类

Spring Boot 启动的时候从类路径下的META-INF/spring.factories 中获取EnableAutoConfiguration指定的值,

然后将这些值作为自动配置类导入到容器中,自动配置类就生效,帮我们进行自动配置工作

J2EE整体整合方案和自动配置都在spring-boot-autoconfigure-2.5.0.jar里;

META-INF/spring.factories

子注解 : @AutoConfigurationPackage: @Import({Registrar.class})  里面有spring底层注解 @Import(给容器中导入一个组件).导入的组件由Registrar.class 加载;作用: 将主配置类SpringBootApplication标注的类的所在包以及下面子包里面的所有组件扫描到Spring容器,这里强调的本包下面的组件;

AutoConfigurationPackage

@ComponentScan :用于类或接口上主要是指定扫描路径,spring会把指定路径下带有指定注解的类自动装配到bean容器里。会被自动装配的注解包括@Controller、@Service、@Component、@Repository等等。其作用等同于<context:component-scan base-package="com.maple.learn" />配置; 

可以看出ComponentScan 和 AutoConfigurationPackage很相似,前者强调的是扫描指定包路径下的组件,后者则是扫描注解所在包路径下的组件;


解读篇结束;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容