01_SpringBoot_入门
[TOC]
笔记
入门
简介
Spring Boot 来简化 Spring 应用开发,约定大于配置去繁从简,just run 就能创建一个独立的,产品级别的应用。
简化 Spring 应用开发的一个框架;
整个 Spring 技术栈的一个大整合;
J2EE 开发的一站式解决方案;
Spring Boot 对于 Spring 的再次封装
背景
J2EE 笨重的开发、繁多的配置、低下的开发效率、复杂的部署流程、第三方技术集成难度大。
解决
“Spring 全家桶”时代。
Spring Boot --> J2EE 一站式解决方案 --> Spring Cloud 分布式整体解决方案

优点
快速创建独立运行的 Spring 顶目以及与主流框架集成
使用嵌入式的 Servlet 容器,应用无需打成 WAR 包
starters 自动依赖与版本控制
大量的自动配置,简化开发,也可修改默认值
无需配置 XML,无代码生成,开箱即用
准生产环境的运行时应用监控
与云计算的天然集成
历史回顾
事实上,在 Spring 3.0 开始,Spring 官方就已经开始推荐使用 Java 配置来代替传统的 XML 配置了,我们不妨来回顾一下 Spring 的历史:
Spring 1.0
在此时因为 JDK 1.5 刚刚出来,注解开发并未盛行,因此一切 Spring 配置都是 XML 格式,想象一下所有的 bean 都用 XML 配置
Spring 2.0
Spring 引入了注解开发,但是因为并不完善,因此并未完全替代 XML,此时的程序员往往是把 XML 与注解进行结合
Spring 3.0
Spring 3.0 以后 Spring 的注解已经非常完善了,因 Spring 推荐大家使用完全的 Java 配置来代替以前的 XML,不过似乎在国内并未推广行。然后当 SpringBoot 来临,人们才慢慢认识到 Java 配置的优雅。
有句古话说的好:拥抱变化,拥抱未来。所以我们也应该顺应时代潮流,做时尚的弄潮儿,一起来学习下 Java 配置的玩法。
微服务
2014 martin fowler
微服务:架构风格
一个应用应该是一组小型服务;可以通过 HTTP 的方式进行互通
单体应用:ALL IN ONE;


环境约束
安装环境约束
JDK 1.8(Spring Boot 1.7 及以上;java version "1.8.0_112")
Maven 3.3(Maven 3.3 以上版本;Apache Maven 3.3.9)
Interllij IDEA 2017: Interllij IDEA 2017.2.2 X64, STS
Spring Boot 1.5.9 RELEASE: 1.5.9
Maven 配置文件约束
创建 Spring Boot 工程
Maven 依赖导入
创建普通Maven工程(jar)
导入依赖 Spring Boot 相关的依赖
编写主程序 启动 Spring Boot 应用
编写相关的Controller、Service
以下两种方法作用等同
@Controller
@RestController
运行主程序测试
简化部署
使用 Spring Initializer 快速创建 Spring Boot 项目
IDE 都支持使用 Spring 的项目创建向导快速创建一个 Spring Boot 项目
选择我们需要的模块;向导会联网创建 Spring Boot 项目
默认生成的 Spring Boot 项目
主程序已经生成好了,我们只需要我们自己的逻辑
resources 文件夹中目录结构
static:保存所有的静态资源;js css Images
templates:保存所有的模板页面(Spring Boots 默认 jar 包使用入式的 Tomcat,默认不支持 JSP 页面)
可以使用模板引
freemarker
thymeleaf
application.properties:Spring Boot 应用的配置文件,可修改默认配置
完善项目信息

选择需要的starter

创建完成后 不要的文件可以删除

POM 研究
父项目
Spring Boote 的版本仲裁中心
以后我们导入依赖默认是不需要写版本;(没有在 dependencies 里面管理的依赖自然需要声明版本号)
导入依赖
spring-boot-starter-web
spring-boot-starter:spring-boot 场景启动器;帮我们导入了 web 模块正常运行所依赖的组件;
Spring Boot 将所有的功能场景都抽取出来,做成一个个的 starters(启动器),只需要在项目里面引入这些 starter 相关场景的所有依赖都会导入进来。(版本由Spring-Boot自动控制)要用什么功能就导入什么场景的启动器。
spring-boot-starter-test SpringBoot集成junit测试的起步依赖
主程序类,主入口类
@SpringBootApplication: Spring Boot 应用标注在某个类上说明这个类是 Spring Boot 的主配置类,Spring Boot 就应该运行这个类的 main 方法来启动 Spring Boot 应用
@SpringBootConfiguration: Spring Boot 的配置类;
标注在某个类上,表示这是一个 Spring Boote 的配置类
@Configuration:配罩类上来标注这个注解
配置类 ---- 配置文件; 配置类也是容器中的一个组件;@Component
@EnableAutoConfiguration: 开启自动配置功能;
以前我们需要配置的东西,Spring Boot 帮我们自动配置;@EnableAutoConfiguration 告诉 Spring Boot 开启自动配置功能;这样自动配置才能生效
@AutoConfigurationPackage: 自动配置包
@Import(AutoConfigurationPackages.Registrar.class): Spring 的底层注解@Import,给容器中导入一个组件;导入的组件 AutoConfigurationPackages.Registrar.class 提供
将主配置类(@SpringBootApplication标注的类)的所在包及下面所有子包里面的所有组件扫描到 Spring 容器;
@Import(EnableAutoConfigurationlmportSelector.class)
给容器中导入组件?
EnableAutoConfigurationlmportSelector:导入哪些组件的选择器
将所有需要导入的组件以全类名的方式返回;这些组件就会被添加到容器中;
会给容器中导入非常多的自动配置类(xxxAutoConfiguration);就是给容器中导入这个场景需要的所有组件,并配置好这些组件,有了自动配置类,免去了我们手动编写配置注入功能组件等的工作

SpringFactoriesLoader.loadFactoryNames(EnableAutoConfiguration.class, classLoader)
Spring Boot 在启动的时候从类路径下的 META-INF/spring.factories 中获取 EnableAutoConfiguration 指定的值,将这些值作为自动配置类导入到容器中,自动配置类就生效,帮我们进行自动配置工作;以前我们需要自己配置的东西,自动配置类都帮我们自动完成;
导入资源文件
排除资源文件
异常和热部署
idea Spring Boot热部署
idea --> Setting --> Build, Execution, Deployment --> Compiler --> Build project automatically
CHECKED --> Build project automatically

快捷键:
Win:
Ctrl+alt+shift+/ Mac:
command+option+shift+/选择Registry...
CHECKED --> compiler.automake.allow.when.application.running

POM依赖增加对热部署工具的依赖
Maven 打包异常
最后更新于
这有帮助吗?

