1.spring boot(脚手架)的介绍
简化Spring应用开发的一个框架;
整个Spring技术栈的一个大整合;
J2EE开发的一站式解决方案;优点:快速创建独立运行的spring项目以及与主流框架集成
使用嵌入式的Servlet容器,应用无需打成war包,内嵌Tomcat
Starters自动依赖和版本控制
大量的自动装配,简化开发,也可以修改默认值
无需配置XML无代码生成开箱即用
准生产环境的运行时应用监控
与云计算的天然集成
2.spring boot的环境准备
环境约束
–jdk1.8:Spring Boot 推荐jdk1.7及以上;java version "1.8.0_112"
–maven3.x:maven 3.3以上版本;Apache Maven 3.3.9
–IntelliJIDEA2017:IntelliJ IDEA 2017.3.3 x64、STS
–SpringBoot 2.0.2.RELEASE:统一环境; spring5
不要求版本 单一springboot项目 版本冲突
SpringCloud微服务治理的时候
3.把maven变成springboot项目
小知识点 jar和war包的区别:war是(Web Application Archive)的缩写
所以当涉及web的页面要打成war包,只涉及后端的一些逻辑打成jar包
1.创建一个maven工程
2.导入springboot相关的依赖
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring‐boot‐starter‐parent</artifactId> <version>1.5.9.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring‐boot‐starter‐web</artifactId> </dependency> </dependencies>
3.编写一个主程序
@SpringBootApplication public class HelloWorldMainApplication { public static void main(String[] args) { // Spring应用启动起来 SpringApplication.run(HelloWorldMainApplication.class,args); } }
3.1 @SpringBootApplicatio的作用
→ 用这个注解来标注一个主程序类,说明这个是一个spring boot程序
4.可以编写响应的controller和service类
5. 简化部署(非必要)
这是一个定义项目构建生命周期过程的插件(这个插件,可以将应用打包成一个可执行的jar)
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
4.spring-boot-starter-web的作用
1.1 简单介绍
spring-boot-starter:spring-boot场景启动器;帮我们导入了web模块正常运行所依赖的组件;
Spring Boot将所有的功能场景都抽取出来,做成一个个的starters(启动器),只需要在项目里面引入这些starter
相关场景的所有依赖都会导入进来。要用什么功能就导入什么场景的启动器1.2 使用场景
spring-boot-starter-web
的使用场景主要涵盖了基于 Spring Boot 的 Web 应用程序开发。以下是其一些主要的使用场景:
RESTful API 开发:
spring-boot-starter-web
提供了开发 RESTful API 所需的所有核心组件。通过使用 Spring MVC 和 Spring Boot 的自动配置特性,开发者可以快速地创建和部署 RESTful API。传统 Web 应用程序(MVC):
尽管 RESTful API 是现代 Web 开发的常见选择,但仍有场景需要使用传统的基于视图的 Web 应用程序。spring-boot-starter-web
提供了 Spring MVC,它支持基于视图的 Web 开发,可以轻松地与 JSP、Thymeleaf、FreeMarker 等模板引擎集成。Spring 框架集成:
由于spring-boot-starter-web
是基于 Spring MVC 的,因此它提供了对 Spring 框架的完整集成。这意味着开发者可以使用 Spring 的所有特性,如依赖注入、事务管理、安全性等,来构建他们的 Web 应用程序。嵌入式 Servlet 容器:
默认情况下,spring-boot-starter-web
包含了嵌入式 Tomcat,用于在开发过程中运行应用程序。这使得开发者无需配置和部署到外部的 Servlet 容器(如 Tomcat、Jetty 或 Undertow),从而简化了开发流程。当然,开发者也可以选择使用其他嵌入式 Servlet 容器或部署到外部的 Servlet 容器。快速原型和迭代:
由于 Spring Boot 的快速启动和自动配置特性,结合spring-boot-starter-web
,开发者可以快速地创建和迭代 Web 应用程序的原型。这有助于在开发早期就发现和解决潜在的问题,从而加快项目的进度。微服务架构:
在微服务架构中,每个服务通常都是一个独立的、可部署的单元。spring-boot-starter-web
使得开发者可以轻松地创建和部署这些微服务,因为每个服务都可以作为一个独立的 Spring Boot 应用程序来运行。与 Spring Cloud 集成:
当与 Spring Cloud 集成时,spring-boot-starter-web
可以帮助开发者构建分布式系统,如服务发现、配置管理、断路器模式等。Spring Cloud 提供了一系列与 Spring Boot 兼容的库和工具,用于构建微服务架构。
4. 深度解析SpringBootApplication的内部
这是进入SpringBootApplication的内容
@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class), @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) }) public @interface SpringBootApplication {
1.1 SpringBootConfiguration 这个是代表spring boot的配置类
1.1.1标注到某个类上,表示这是一个Spring Boot的配置类;
1.1.2 与@Configuration的区别 SpringBootConfiguration 是springboot特有的属于@Configuration的增强功能
1.1.3 当你使用
@Configuration
或@SpringBootConfiguration
时,不需要再为该类添加@Component
。这些注解已经足够告诉Spring这个类是一个配置类,并且包含Bean的定义。1.2 @EnableAutoConfiguration:开启自动配置功能
1.2.1 作用:以前我们需要配置的东西,springboot帮我们自动配置@EnableAutoConfiguration告诉SpringBoot开启自动配置功能;这样自动配置才能生效;
5 使用spring initializer快速创建springboot项目
1.1 创建过程
IDE都支持使用Spring的项目创建向导快速创建一个Spring Boot项目;
选择我们需要的模块;向导会联网创建Spring Boot项目;
默认生成的Spring Boot项目;
主程序已经生成好了,我们只需要我们自己的逻辑
1.2 结构
resources文件夹的目录结构
static :保存所有静态资源 js css images
templates : 保存所有的模版页面:(Spring Boot默认jar包使用嵌入式的Tomcat,默认不支持JSP页面);可以使用模板引擎(freemarker、thymeleaf);
application.properties:Spring Boot应用的配置文件;可以修改一些默认设置;