springboot是一个javaweb的开发框架,和SpringMVC类似,对比其他javaweb框架的好处:简化开发,约定大于配置,能迅速的开发web应用,几行代码开发一个http接口。
springboot-helloworld
1、使用IDEA创建一个springboot 项目
2、修改项目名称后添加web依赖
3、整理项目结构
4、在controller包下添加处理请求的程序
1 | // 原理:自动装配 |
整个过程非常的简单,无需像SpringMVC那样进行过多的配置,只需编写处理业务逻辑的代码,即向前端提供接口。
当然,这都源自springboot的自动装配原理。我们所编写的一个个controller不过是一个个组件,springboot已经帮我们装配好了。
在application.properties中可以修改项目的端口号
1 | # 更改项目端口号 |
自动装配原理
pom.xml
父项目依赖,管理项目的资源过滤及插件
1 | <parent> |
web模块正常运行所依赖的组件:tomcat,springmvc等等
1 | <dependency> |
主启动类
1 | // 标注这是一个springboot的应用 |
SpringBoot的主配置类 , SpringBoot就应该运行这个类的main方法来启动SpringBoot应用;
Springboot的所有自动配置都是在启动的时候扫描并加载:
spring.factories:所有的配置文件都在里面,但是不一定生效,要判断条件成立,只要导入了对应的启动器,自动装配才会成功。
自动配置核心注解:
1、@SpringBootApplication;
2、@EnableAutoConfifiguration;
3、@AutoConfifigurationPackage:这个组合注解主要是@Import(AutoConfigurationPackages.Registrar.class),它通过将Registrar类导入到容器中,而Registrar类作用是扫描主配置类同级目录以及子包,并将相应的组件导入到Spring容器中;
4、@Import(AutoConfigurationImportSelector.class):它通过将AutoConfigurationImportSelector类导入到容器中,AutoConfigurationImportSelector类作用是通过selectImports方法执行的过程中,会使用内部工具类SpringFactoriesLoader,查找classpath上所有jar包中的META-INF/spring.factories进行加载,实现将配置类信息交给SpringFactory加载器进行一系列的容器创建过程。(spring.factory记录了需要加载的自动配置类的全限定名)
SpringApplication.run(HelloworldApplication.class, args);
一共做了两件事,创建SpringApplication对象,在进行初始化的时候找到spring.factories文件中配置的事件监听器并保存;调用run()方法,刚刚保存的监听器根据当前时机触发不同的事件,比如容器的初始化,容器创建完成等。同时也会刷新容器,进行组件的扫描、创建、加载等工作。