文章目录
Spring Boot内容介绍
- (1)Spring Boot简介
- (2)Spring Boot快速入门
- (3)Spring Boot原理分析
- (4)Spring Boot配置文件
- (5)Spring Boot与其他框架的整合
Spring回顾
- (1)Spring是什么?
Spring是Java企业版(Java Enterprise Edition,JEE,也称J2EE)的全栈,轻量级代替品- (2)Spring核心是?
IOC,依赖注入 @Service@Repository,@Autowired
AOP,面向切面编程,事务,日志管理,权限- (3)Spring特点是什么?
》Spring的组件代码是轻量级
的,但它的配置却是重量级
的
各种XML配置 application Context-dao.XML application Context-tx.XML springmvc.XML
》项目的依赖管理也是一件耗时耗力的事情,要十分注意版本兼容
pom.XML比较大
1、Spring Boot介绍
(1)Spring Boot是什么?
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程
(2)Spring Boot的特点是什么?
- 1 更快的入门体验
开箱即用 - 2 也无需XML配置。同时也可以修改默认值
基于约定优于配置的思想 - 3 提供了一些大型项目中常见的非功能性特性,如嵌入式服务器等
- 4 Spring Boot不是对Spring功能上的增强,而是提供了一种快速使用Spring的方式
2、Spring Boot的核心功能概述
- (1)起步依赖
起步依赖就是将具备某种功能的坐标打包到一起,并提供一些默认的功能。 - (2)自动配置
Spring Boot的自动配置是一个运行时的过程
在应用程序启动时,自动加载默认配置,判断是否满足需求
如果不满足,则不需要额度配置,否则加载额外配置
3、创建Spring Boot项目 ----方式①
(1)创建Maven工程
该工程为普通的java工程即可
(2)添加Spring Boot的起步依赖
》继承起步依赖spring-boot-starter-parent
》集成SpringMVC进行Controller的开发,要导入web的启动依赖
- 在pom中添加继承spring-boot-starter-parent依赖接口完成创建
<!-- 必须指定starter为parent-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.0</version>
</parent>
<!-- 依赖web即springmvc-->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
4、创建springboot项目----方式②(推荐)
(1)选择springboot初始化工具
(2)设置包名,工程名
(3)选择web依赖
(4)创建成功
(5)controller
-
(springboot将依赖,配置承包了,开发者只要写三层架构的代码)
-
@RestController注解:其实就是将之前的@Controller和@ResponseBody注解加在一起,返回json数据
@RestController
public class Demo01Controller {
@RequestMapping(path="/demo01",method = {RequestMethod.GET,RequestMethod.POST})
public @ResponseBody
String demo01(){
return "HelloWorld!!!";
}
}
(6)启动SpringBoot
- 》1》直接Run点击Demo01Application.java
- 》2》通过Maven启动
在控制台Terminal输入mvn spring-boot:run回车,当看到springboot的logo出现,并加载了项目的控制器等类之后,就是启动成功了。
(7)启动成功
浏览器访问地址
5、Spring Boot的原理分析-起步依赖
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.0</version>
<relativePath/>
<!-- lookup parent from repository -->
</parent>
<groupId>com.smp</groupId>
<artifactId>demo01</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo01</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
(1)parent说明
- 分析spring-boot-starter-parent—>自动帮我们引入了web模块开发需要的相关jar包。
当我们按住ctrl点击这个parent依赖可以看到如下
这个dependencies才是正真的boot版本仲裁中心,再次进入这个dependencies版本中心,可以看到许多的版本版本声明,所以以后导入其他此处已经存在的依赖默认不需要写版本,但是dependencecies中没有声明的还需写出版本号
(2)启动器
Boot会将一个个项目场景做成一个个starter启动器,项目中涉及到什么场景就引入什么启动器,项目中引入这些启动器之后,和这个starter相关的依赖也会被引入。
spring-boot-starter-XXX—>引入相应的jar包
- (3)一部分坐标的版本、依赖管理、插件管理已经定义好
- (4)SpringBoot工程继承spring-boot-starter-parent后已经具备版本锁定等配置
起步依赖的作用就是进行依赖的传递
- (5) springboot打包插件
加上maven的打包插件,用于做微服务,分布式,内部包含了tomcat
6、Spring Boot常用注解
- (1)@SpringBootApplication:标注SpringBoot的启动类,该注解具备多种功能(用在 Spring Boot 主类上,标识这是一个 Spring Boot 应用,用来开启Spring Boot 的各项能力。其实这个注解就是
@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan
这三个注解的组合,也可以用这三个注解来代替@SpringBootApplication 注解。) - (2)SpringApplication.run(MySpringBootApplication.class) 代表运行SpringBoot的启动类,参数为SpringBoot启动类的字节码对象
- (3)@Service(业务层):用于标注业务层组件
- (4)@Controller(控制层/Web层):用于标注控制层组件
- (5)@Repository(持久层):用于标注数据访问组件,即DAO组件
- (6)@Component:泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注
- (7)@Value:只能给属性赋字符串类型或整数的值,可用在实体类中的属性上
- (8)@RestController:该注解一般标记在控制层。它是
@Controller和@ResponseBody
注解的组合
@Controller注解:表示此类是一个控制器类
@ResponseBody注解:表示输出的是JSON格式的数据 - (9)@Autowired:是一个自动装配的注解,它会在容器使用此类时自动注入,也就意味着在使用某个类时不用手动 new 对象,这是一个很重要的注解
- (10)GetMapping("/xx"):它是一个组合注解,是
@RequestMapping(value="/xx", method = RequestMethod.GET)
的缩写版本,该注解将HTTP Get 映射到 特定的处理方法上。 - (11)@SpringBootConfiguration: 是一个Spring配置注解(继承@Configuration),将当前类声明的一个或多个**@Bean**注解标记的方法纳入Spring容器管理,实例名就是方法名。
- (12)@EnableAutoConfiguration: 自动装配,用于自动配置starter中的信息,实现自动化装配。根据添加的jar包来配置项目的默认配置。
- (13)@ComponentScan: 包扫描,用于扫描指定位置下的所有的Spring相关注解(@Component,@Controller,@Service,@Repository)
- (14)@Bean: 用在方法上,取代xml中的标签创建对象使用
- (15)@Configuration:用在类上,声明当前类是一个配置文件(代替Spring配置文件)
- (16)@ConfigurationProperties:配置属性绑定,把全局/主配置的yml/properties的配置信息注入到POJO中,这个注解的使用需要把当前类标记为组件(添加注解@Component),可以添加属性prefix = ‘xxx’,这个xxx指的是yml/properties的key。
- (17)@PropertySource:引入SpringBoot配置,当@ConfigurationProperties需要从副配置文件拿数据时,可以用@PropertySource手动引入副配置,value可指定多个路径
- (18)@ImportSource 引入Spring配置。引入Xxx.xml的Spring配置文件,需要在主类配置该注解用于导入多个配置文件。@ImportResource(locations = {“classpath:Xxx.xml”})