SpringBoot启动流程
1.SpringMVC
1.1 框架的作⽤
接收前端传递的数据,与⽤户进⾏交互.
1.2 SpringMVC参数传递的格式
1.2.1 简单参数传值
html
前提: servlet 是⼀种参数传递的机制 要求:所有的参数类型都是String 数据类型
说明: 数据类型的转化是框架帮助完成的
public xxxx getUser(String username,Integer age)
1.2.2 对象的⽅式接收参数
html
要求: 1.属性的名称必须与name属性名称⼀致.
2. 要求对象中必须有set/get⽅法 对象的属性都是private
public xxxx getUser(User user)
1.2.3 同名提交问题
html
说明: 有时页⾯中会出现同名的提交问题 name属性都是⼀致的. 问 SpringMVC如何接收
原理: 当页⾯进⾏同名提交. 会将参数使⽤","号进⾏拼接 hobby = 吃1,吃2,吃3 String数据类型mvc参数接收:
public xxxx getUser(String[] hobby){
//hobby 按照,号拆分为数组之后循环变量取值操作......
}
...的本质就是数组
public xxxx hobby){
//hobby 按照,号拆分为数组之后循环变量取值操作......
}
1.2.4 为对象的引⽤赋值
原则: SpringMVC中页⾯的name属性名称 不能重复, 除⾮同名提交问题
实际需求: 使⽤对象的引⽤解决 实际需求中的同名提交问题
<input name="name" type="text" value="⼆郎神"> user(name) ⼆郎神,啸天
<input name="dog.name" type="text" value="啸天"> dog(name) ⼆郎神,啸天
public class User{
private String name; //⼆郎神
private Dog dog; //dog对象
}
public class Dog{
private String name; //啸天
}
public xxxx getUser(User user){
}
@RequestMapping("/user/{id}/{name}")
public xxx getUser(@Pathvariable Integer id,@Pathvariable String name){
}
//要求: {属性名称} 必须与对象的属性名称⼀致 get/set⽅法⽀持
@RequestMapping("/getUser/{id}/{name}")
public xxx getUser(User user){
}
@GetMapping("/user/{id}/{name}")
public xxx getUser(@Pathvariable Integer id,@Pathvariable String name){
}
@PutMapping("/user/{id}/{name}")
public xxx getUser(User user){
}
1.2.6 restFul⾯试题
考题: 什么是restFul?
答:
1.2.7 SpringMVC调⽤流程图(扩展)
在这⾥插⼊图⽚描述
2. 京淘项⽬环境搭建
程序员操作: 路径不能有中⽂/空格/特殊字符 /不要放到C盘的系统⽂件中
2.1 选择根⽬录
1).在本地磁盘中 指定根⽬录
在这⾥插⼊图⽚描述
2).利⽤IDEA打开⽬录
在这⾥插⼊图⽚描述
2.2 IDEA环境调试
2.2.1 安装lombok
说明: 使⽤lombok插件 可以简化⽤户编辑get/set/toString/构造等常规⽅法.
在这⾥插⼊图⽚描述
2.2.2 控制字体⼤⼩/参数提⽰
在这⾥插⼊图⽚描述
2.2.3 开启编译
在这⾥插⼊图⽚描述
2.2.4 ⾃动保存
在这⾥插⼊图⽚描述
2.3 Maven配置
2.3.1 settings⽂件
1).本地库的配置
在这⾥插⼊图⽚描述
2).远程仓库地址
aliyun aliyun for maven * maven.aliyun/repository/public 3).指定JDK版本 jdk-1.8 true 1.8
2.4 创建SpringBoot项⽬
2.4.1 创建项⽬
在这⾥插⼊图⽚描述
2.4.2 选择jar包依赖
在这⾥插⼊图⽚描述
3. SpringBoot框架
3.1 SpringBoot框架作⽤
SpringBoot项⽬可以理解为框架的框架(⼯具API). (Spring/SpringMVC/Mybatis),简化框架的调⽤.
核⼼思想: 开箱即⽤
SpringBoot内部与Spring⽆缝集成.
Spring的作⽤: 整合其他的第三⽅框架,使得业务调⽤变得浑然⼀体.
Spring IOC机制 控制反转: 将对象创建的权利交给Spring容器管理,由容器管理对象的⽣命周期.
Spring优势: 解决了框架之间的耦合性问题.
框架之间的结构(了解)
在这⾥插⼊图⽚描述
3.l⽂件说明
3.2.1 parent标签作⽤
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.0</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
3.2.2 maven坐标的作⽤
说明: 通过坐标 可以在本地仓库/远程镜像服务器中,准确查需要的jar包⽂件
<!--项⽬的组ID-->
<groupId>com.jt</groupId>
<!--项⽬名称⼀般都是英⽂-->
<artifactId>springboot_demo_1</artifactId>
<!--版本控制-->
<version>0.0.1-SNAPSHOT</version>
<name>springboot_demo_1</name>
<description>Demo project for Spring Boot</description>
3.2.3 项⽬依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
3.2.4 build标签作⽤
<build>
<plugins>
<!--springboot专门为springboot的⼯程开发了⼀款项⽬管理插件-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
3.2.5 项⽬打包相关知识
1).打包命令
在这⾥插⼊图⽚描述
2).打包成功之后的效果
在这⾥插⼊图⽚描述
3).clean 表⽰删除target中的⽬录
4).⼀般项⽬的打包顺序 1.build 2.clean 3.install
3.3 SpringBoot执⾏流程(内部结构)
3.3.1 元注解
说明: 修饰注解的注解 称为元注解.
⽤法:
@Target(ElementType.TYPE) 注解对谁有效(类/⽅法/属性)
@Retention(RetentionPolicy.RUNTIME) 什么时期有效 整合运⾏期间有效
@Documented 是否需要⽣成⽂档.
@Inherited 该注解是否可以被继承 可以被继承
3.3.2 SpringBootConfiguration注解
说明: 该注解标识了main⽅法的类.相当于告诉程序 主启动类就是⼀个⼤的配置类.
将来主启动类执⾏时,会去扫描所有的⼩的配置类, ⼩的配置类由主启动类负责执⾏并且加载.
统⼀将对象交给spring容器管理.
3.3.3 @ComponentScan
说明: SpringBoot启动时需要加载很多事先准备好的配置类,但是由于个别导⼊之后,会导致整个程序运⾏异常.,所以需要排除个别启动项 例如
在这⾥插⼊图⽚描述
深⼊说明: jar包具有依赖的传递性,通常都会进⾏引⼊,如果某些类影响程序,则需要⼿动排除,⽽不是排除整个jar包⽂件.
A.jar ----->
B.jar ------> C(xxxx.class).jar
3.3.4 EnableAutoConfiguration
说明: 该注解表⽰⾃动化的配置.
包含:
1.@AutoConfigurationPackage 动态扫描主启动类的包路径.
注意事项: 以后写代码 在主启动类的同包及⼦包中编辑.
2.@Import(AutoConfigurationImportSelector.class)
⾃动化配置: 添加⾃动化的启动项 等待程序调⽤
<dependency>
<groupId>org.springframework.boot</groupId>
<!--
spring-boot-starter: springboot启动项
SpringBoot官⽹针对于该框架已经完成了"配置" ⽤户只需要简单的配置
既可以使⽤该功能.
-->
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
SpringBoot程序启动的流程:
根据选择器 执⾏l⽂件中的启动项
在这⾥插⼊图⽚描述
3.3.5 SpringBoot所有的启动项输出:
Positive matches:
AopAutoConfiguration matched:
-@ConditionalOnProperty(spring.aop.auto=true) matched (OnPropertyCondition)
AopAutoConfiguration.ClassProxyingConfiguration matched:
-@ConditionalOnMissingClass did not find unwanted class'org.aspectj.weaver.Advice'(OnClassCondition)
-@ConditionalOnProperty(spring.aop.proxy-target-class=true) matched (OnPropertyCondition)
DispatcherServletAutoConfiguration matched:
-@ConditionalOnClass found required class'org.springframework.web.servlet.DispatcherServlet'(OnClassCondition)
- found 'session' scope (OnWebApplicationCondition)
springboot aop3.3.6 SpringBoot启动流程
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论