1. 京淘项目环境搭建
1.1 JDK配置
1.1.1 JDK环境说明
1.1.2 JDK环境变量配置
1.2 Maven配置
1.2.1 私服镜像配置
<mirror>
<id>aliyun</id>
<name>aliyun for maven</name>
<mirrorOf>*</mirrorOf>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
1.2.2 本地仓库位置
1.3 STS配置
1.3.1 配置字符集编码格式
1.3.2 检查JDK配置
1.3.3 引入maven
1).配置maven环境
2).编辑maven配置文件
1.3.4 关闭校验
1.4 构建SpringBoot入门项目
1.4.1 创建项目
1.4.2 创建项目(二)
2 京淘项目概述
3.SpringBoot框架高级说明
3.1 parent标签的作用
<!--1.jar包种类繁多
A.jar 1.0版本 B.jar 2.0版本 C.jar 3.0版本
A.jar 2.0版本 B.jar 2.0版本 C.jar 3.0版本
早期的jar包版本 可能出现jar包冲突的问题.
所有采用parent标签的方式 统一定义了版本号 由官方自己进行测试,
将允许稳定的版本统一的管理.
-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.2.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
3.2 关于maven 插件的说明
<!-- maven项目指定的插件配置 该插件主要负责 maven项目相关操作 打包/test/clean/update
等相关maven操作 注意事项:但凡是maven项目则必须添加
插件.否则将来项目部署必然出错 -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
3.3 关于Maven 属性的配置
<!--当前maven配置信息 -->
<properties>
<java.version>1.8</java.version>
<!--定义maven插件版本 -->
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
<skipTests>true</skipTests>
</properties>
3.4 关于Maven依赖说明
3.4.1 依赖与本地仓库的关系
<!--maven的依赖 利用坐标的形式管理jar包 本地仓库之间有什么关系呀? -->
<dependency>
<!--组ID, 公司域名倒写. -->
<groupId>org.springframework.boot</groupId>
<!--具体项目名称 -->
<artifactId>spring-boot-starter-web</artifactId>
<!--版本号 被parent标签提前定义 -->
<!-- <version>2</version> -->
</dependency>
2).本地仓库内容
3).规则说明
如果以后下载jar包时,遇到maven依赖异常.则首先查询本地仓库中是否有该jar包的完整版本.
如果发现jar包文件下载不完全,则需要删除之后重新下载.
3.4.2 jar包与jar包之间的依赖传递性说明
1.说明: maven具有jar包的依赖性
例如: A.jar---->B.jar ------> C.jar
只要导入A.jar 那么b/c都会自动的完成依赖
2).检查POM.xml文件
说明:由于maven加载jar包之后还会去加载该jar包文件的POM文件,如果该POM文件中依赖了其他的jar包,那么maven也会自动的进行加载.
3.手动创建SpringBoot项目
3.1 创建maven项目
3.2 指定项目名称
3.3 编辑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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.jt</groupId>
<artifactId>springboot_demo2</artifactId>
<version>1.0-SNAPSHOT</version>
<!--1.统一定义父级项目-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<java.version>1.8</java.version>
<!--跳过测试类加载-->
<skipTests>true</skipTests>
</properties>
<!--2.引入第三方依赖-->
<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>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<!--3.添加插件-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
3.4 编辑主启动类
@SpringBootApplication //标识我是一个SpringBoot的项目
public class SpringBootRun {
public static void main(String[] args) {
SpringApplication.run(SpringBootRun.class,args);
}
}
3.4 编辑测试Controller
package com.jt.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
/**
* 用户通过/hello的路径获取 友好的提示信息.
*/
@RequestMapping("/hello")
public String hello(){
return "搭建环境真困难,为什么就我的不行呢? 我昨天干了什么呢!!!!!";
}
}
4.SpringBoot启动原理说明
4.1 需求说明
1.SpringBoot启动是如何流转的.
2.什么叫做开箱即用,springBoot中如何实现开箱即用的.
4.2 "开箱即用"说明
如果需要引入第三方的"工具/功能",只需要经过少量的配置/或者不做任何配置.则就可以使用该功能.
4.2.1 关于启动项的说明
<!--直接的依赖项-->
<dependency>
<groupId>org.springframework.boot</groupId>
<!--springBoot启动项 内部的jar包文件已经将配置准备完成,用户
只需要导入jar包就可以获取其功能.
starter-web 直接引入了SpringMVC框架
传统mvc框架配置:
1.导入特定的jar包及版本.
2.编辑web.xml配置 dispatcherServler 拦截路径
3.配置mvc的配置文件 包扫描 视图解析器....
-->
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
4.3 SpringBoot程序启动加载过程
4.3.1元注解说明:
@Target(ElementType.TYPE) 对哪个元素有效 对类有效
@Retention(RetentionPolicy.RUNTIME) 什么时候起作用 运行期有效
@Documented 是否支持生成文档
@Inherited 该注解是否可以被继承.
4.3.2 SpringBootConfiguration说明
作用:标识主启动类是一个大型的配置文件,启动时会加载所有的小的配置文件.
@Configuration: 表示该类是一个配置类.
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration
public @interface SpringBootConfiguration {.....}
4.3.3 excludeFilters 说明
说明: 在springboot容器启动时,不需要加载某些过滤器.由于parent标签中定义了所有的关联的jar包文件信息.则启动时有可能导致意外的发生,所有需要提前剔除.
@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
4.3.4 @AutoConfigurationPackage
说明: 当程序启动时,会根据主启动类的包路径,扫描其子孙包,所以springboot以后写代码时应该在其子孙包下编辑.
4.3.5 AutoConfigurationImportSelector
说明:该配置中内部集成了所有的SpringBoot中的选择器.这些选择器的主要的任务就是查看是否有自己选择器所管理的启动项的配置. 如果发现该启动项,那么选择器就会执行该启动项,从而实现了开箱即用的操作.
Q.E.D.