Spring Boot 快速入门
Spring Boot 快速入门
SpringBoot 简介
简化
Spring
应用开发的一个框架;整个
Spring
技术栈的一个大整合;
J2EE
开发的一站式解决方案;
优点:
快速创建独立运行的
Spring
项目以及与主流框架集成使用嵌入式的
Servlet
容器,应用无需打成war
包starters
自动依赖与版本控制大量的自动配置,简化开发,也可修改默认值
无需配置
XML
,无代码生成,开箱即用准生产环境的运行时应用监控
与云计算的天然集成
微服务
2014 年,martin fowler 发表了一篇关于微服务的文章。
微服务:是一种架构风格(服务微化)
一个应用应该是一组小型服务;可以通过 HTTP
的方式进行互通;
单体应用:ALL IN ONE
微服务:每一个功能元素最终都是一个可独立替换和独立升级的软件单元。
环境准备
环境约束:
jdk1.8
:Spring Boot 推荐jdk1.7及以上;java version “1.8.0_131”maven3.x
:maven 3.3以上版本;Apache Maven 3.6.1IntelliJ IDEA 2018
:IntelliJ IDEA 2018.3.6 x64SpringBoot 2.1.7.RELEASE
:2.1.7;
统一环境;
1、MAVEN设置;
给 maven 的 settings.xml
配置文件的 profiles
标签添加
1 | <profile> |
2、IDEA设置
整合 maven
进来;
4、Spring Boot 入门程序(HelloWorld)
一个功能:
浏览器发送 hello
请求,服务器接受请求并处理,响应 Hello World
字符串;
1、创建一个maven工程;(jar)
2、导入 spring boot 相关的依赖
1 | <parent> |
3、编写一个主程序;启动 Spring Boot 应用
1 | /** |
4、编写相关的 Controller、Service
1 |
|
5、运行主程序测试
6、简化部署
1 | <!-- 这个插件,可以将应用打包成一个可执行的jar包;--> |
将这个应用打成 jar
包,直接使用 java -jar
的命令进行执行;
Hello World 探究
POM 文件
父项目
1 | <parent> |
Spring Boot 的版本仲裁中心;
以后我们导入依赖默认是不需要写版本;(没有在 dependencies 里面管理的依赖自然需要声明版本号)
启动器
1 | <dependency> |
spring-boot-starter-web
:
spring-boot-starter
:spring-boot 场景启动器;帮我们导入了 web 模块正常运行所依赖的组件;
Spring Boot 将所有的功能场景都抽取出来,做成一个个的 starters
(启动器),只需要在项目里面引入这些 starter 相关场景的所有依赖都会导入进来。要用什么功能就导入什么场景的启动器。
主程序类,主入口类
1 | /** |
@SpringBootApplication: Spring Boot 应用标注在某个类上说明这个类是 Spring Boot 的主配置类,Spring Boot 就应该运行这个类的 main
方法来启动 Spring Boot 应用;
1 |
|
@SpringBootConfiguration: Spring Boot 的配置类;
标注在某个类上,表示这是一个 Spring Boot 的配置类;
@Configuration:配置类上来标注这个注解;
配置类 —– 配置文件;配置类也是容器中的一个组件;
@Component
@EnableAutoConfiguration:开启自动配置功能;
以前我们需要配置的东西,Spring Boot 会帮我们自动配置;@EnableAutoConfiguration告诉 SpringBoot 开启自动配置功能;这样自动配置才能生效;
1 |
|
@AutoConfigurationPackage:自动配置包
@Import(AutoConfigurationPackages.Registrar.class):
Spring 的底层注解 @Import
,给容器中导入一个组件;导入的组件由 AutoConfigurationPackages.Registrar.class
;
将主配置类(@SpringBootApplication 标注的类)的所在包及下面所有子包里面的所有组件扫描到Spring容器;
@Import(EnableAutoConfigurationImportSelector.class);
给容器中导入组件?
EnableAutoConfigurationImportSelector:导入哪些组件的选择器;
将所有需要导入的组件以全类名的方式返回;这些组件就会被添加到容器中;
会给容器中导入非常多的自动配置类(xxxAutoConfiguration
);就是给容器中导入这个场景需要的所有组件,并配置好这些组件;
有了自动配置类,免去了我们手动编写配置注入功能组件等的工作;
SpringFactoriesLoader.loadFactoryNames(EnableAutoConfiguration.class,classLoader);
Spring Boot在启动的时候从类路径下的 META-INF/spring.factories 中获取 EnableAutoConfiguration 指定的值,将这些值作为自动配置类导入到容器中,自动配置类就生效,帮我们进行自动配置工作;
以前我们需要自己配置的东西,自动配置类都帮我们配置了;
J2EE
的整体整合解决方案和自动配置都在 spring-boot-autoconfigure-2.1.7.RELEASE.jar
;
使用 Spring Initializer 快速创建Spring Boot项目
IDEA:使用 Spring Initializer快速创建项目
IDE 都支持使用 Spring 的项目创建向导快速创建一个 Spring Boot 项目;
选择我们需要的模块;向导会联网创建 Spring Boot 项目;
默认生成的 Spring Boot 项目;
主程序已经生成好了,我们只需要编写自己的业务逻辑就行了
resources 文件夹中目录结构
static
:保存所有的静态资源;js css images
;templates
:保存所有的模板页面;(Spring Boot 默认 jar 包使用嵌入式的 Tomcat,默认不支持 JSP 页面
);可以使用模板引擎(freemarker
、thymeleaf
);application.properties
:Spring Boot 应用的配置文件
;可以修改一些默认设置;