兰州网络推广关键词,网站排名优化学习,海外推广大使,wordpress acf 收费目录
快速入门
依赖管理和自动配置
修改自动仲裁/默认版本号
starter场景启动器
自动配置
修改默认扫描包结构
修改默认配置
读取application.properties文件
按需加载原则
容器功能
Configuration
Import
编辑
Conditional
ImportResource
配置绑定Configur…目录
快速入门
依赖管理和自动配置
修改自动仲裁/默认版本号
starter场景启动器
自动配置
修改默认扫描包结构
修改默认配置
读取application.properties文件
按需加载原则
容器功能
Configuration
Import
编辑
Conditional
ImportResource
配置绑定ConfigurationProperties
Lombok
yaml
基本语法
数据类型
应用
细节
静态资源访问
Rest风格请求处理
接收参数相关注解
PathVariable、RequestParam
RequestHeader
CookieValue
RequestBody
RequestAttribute、SessionAttribute
复杂参数
自定义对象参数-自动封装
自定义转换器
实现接口形式
向容器注入Bean形式
处理Json
内容协商
Thymeleaf
拦截器
实现接口形式
向容器注入Bean形式
文件上传
第一种
第二种 快速入门
jdk8maven3.5 !--导入springboot父工程--parentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.5.3/version/parent!--导入web项目场景启动器会自动导入和web开发相关的所有依赖--dependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency/dependencies
//表示这是一个springboot应用/项目
SpringBootApplication
public class MainApp {public static void main(String[] args) {SpringApplication.run(MainApp.class,args);//或者ConfigurableApplicationContext ioc SpringApplication.run(MainApp.class, args);}
}
Controller
public class HelloController {RequestMapping(/hello)ResponseBodypublic String hello() {return hello;}
} 依赖管理和自动配置
修改自动仲裁/默认版本号
spring-boot-starter-parent 还有父项目, 声明了开发中常用的依赖的版本号并且进行 自动版本仲裁 , 即如果程序员没有指定某个依赖jar的版本则以父项目指 定的版本为准
在pom.xml修改版本号 starter场景启动器 开发中我们引入了相关场景的starter这个场景中所有的相关依赖都引入进来了 比如我们做web开发引入了该starter将导入与web开发相关的所有包 !--导入web项目场景启动器会自动导入和web开发相关的所有依赖--dependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency/dependencies 依赖树可以看到spring-boot-starter-web 帮我们引入了spring-webmvcspring-web 开发模块还引入了spring-boot-starter-tomcat 场景spring-boot-starter-json 场景这些场景下面又引入了一大堆相关的包这些依赖项可以快速启动和运行一个项目提高开发效率 所有场景启动器最基本的依赖就是spring-boot-starter这个依赖也就是SpringBoot自动配置的核心依赖 官方/第三方strater 自动配置
扫描包默认主程序(MainApp)所在的包及其子包下会被扫描
修改默认扫描包结构 scanBasePackages指定扫描的包com.edu这个包及子包会被扫描 SpringBootApplication(scanBasePackages {com.edu,aa.bb})
public class MainApp {public static void main(String[] args) {SpringApplication.run(MainApp.class,args);}
}
修改默认配置
1、在resources目录下创建application.properties文件更改value 2、在application.properties文件中自定义配置通过Value(${})获取对应属性值 读取application.properties文件
也可以放在resource目录下的config目录下、项目路径下 public class ConfigFileApplicationListener {private static final String DEFAULT_SEARCH_LOCATIONS classpath:/,classpath:/config/,file:./,file:./config/*/,file:./config/;private static final String DEFAULT_NAMES application;
}
按需加载原则
自动配置遵守按需加载原则引入了哪个场景starter就会加载该场景关联的jar 包没有引入的starter 则不会加载其关联jar
SpringBoot 所有的配置功能都在spring-boot-autoconfigure 包里面 容器功能
Sping注入组件的注解仍可以在SpringBoot使用
Configuration 传统通过配置文件注入组件 使用Configuration添加/注入组件创建配置类来注入组件 前提在springboot扫描的包/子包下会注入到容器 1. Configuration 标识这是一个配置类, 等价于配置文件 2. 可以通过Bean 注解注入bean对象到容器 3.当一个类被Configuration标识该类-Bean也会注入容器可以被获取 Configuration
public class BeanConfig {//name的值指定bean的id不指定id就是方法名Bean(name monster)public Monster monster01() {return new Monster(200,tom,18,dance);}
} SpringBoot2 新增特性 proxyBeanMethods 指定 Full 模式 和 Lite模式 proxyBeanMethods代理bean的方法 (1) Full(proxyBeanMethods true)默认【保证每个Bean 方法被调用多少次返回的组件都是单实例的, 是代理方式】 (2) Lite(proxyBeanMethods false)【每个Bean 方法被调用多少次返回的组件都是新创 建的, 是非代理方式】 (3) 特别说明: proxyBeanMethods 是在调用Bean方法才生效因此需要先获取 BeanConfig 组件再调用方法而不是直接通过 SpringBoot 主程序得到的容器来获取 bean, 注意观察直接通过 ioc.getBean() 获取 Bean, proxyBeanMethods 值并没有生效 (4) 如何选择: 组件依赖必须使用Full模式如果不需要组件依赖使用Lite模式 (5) Lite模式也称为轻量级模式因为不检测依赖关系运行速度快 容器只有一个配置类可以有多个, 就和Spring可以有多个ioc配置文件是一个道理 Import 使用Configuration可以将Bean注入到容器 也可以在配置类上使用Import就不必写具体的方法默认id就是对应类型的全类名 Conditional
条件装配满足Conditional指定的条件则进行组件注入 Conditional 是一个根注解下面有很多扩展注解 如果扩展注解放在配置类上表示该类的所有组件都要进行条件约束 ImportResource 作用原生配置文件引入, 也就是可以直接导入Spring 传统的 beans.xml 可以认为是SpringBoot 对Spring 容器文件的兼容 将beans.xml文件导入到配置类中 spring或springboot扫描beans.xml文件需要new ClassPathXmlApplicationContext(“”); 现在导入到配置类中springboot可以直接SpringApplication.run(MainApp.class, args); Configuration
ImportResource(locations classpath:beans.xml)
public class BeanConfig2 {}
配置绑定ConfigurationProperties
加入configuration-processor依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-configuration-processor/artifactId!--配置optional为true说明: 表示防止将此依赖传递到其它模块--optionaltrue/optional/dependency
使用Java读取到SpringBoot 核心配置文件 application.properties 的内容 并且把它封装到JavaBean中 如果不添加Component注解会报错 第二种方法在配置类上加EnableConfigurationProperites通过配置类注入到容器 开启Furn配置绑定功能把Furn组件自动注册到容器中 在Bean中必须要有set方法否则属性值是null 如果application.properties有中文需要转成unicode编码写入 在网站中把中文转码再粘贴回去 Lombok 写AllArgsConstructor会覆盖无参构造器搭配上NoArgsConstructor Slf4j --- 日志输出 yaml
以数据为中心的标记语言
基本语法 数据类型
字面量
单个的、不可再分的值data、boolean、string、number、null
对象
键值对的集合map、hash、set、object 数组
一组按次序排列的值array、list、queue 应用 前缀就是yaml第一级的名称 细节 如果 application.properties 和 application.yml 有 相同的前缀值绑定 application.properties 优先级高, 开发时应当避免 加入依赖会有提示字段 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-configuration-processor/artifactId!--配置optional为true说明: 表示防止将此依赖传递到其它模块--optionaltrue/optional/dependency 静态资源访问 可以直接访问x.jpg直接放在resources下访问会报错 静态资源访问原理原理http://localhost:8080/1.jpg静态映射是/**先看/1.jpg是否会被Controller处理否则交给静态资源处理如果静态资源找不到则响应404 页面 静态资源访问前缀和控制器请求路径冲突需要改变静态资源访问前缀 在application.yml修改 spring:web:resources:static-locations: /res/** 改变默认的静态资源路径比如希望在类路径下增加 hspimg目录作为静态资源路径 如果你配置static-locations原来的访问路径就被覆盖了需要重新指定一下 spring:mvc:static-path-pattern: /res/**web:resources:static-locations: [classpath:/hspimg/,classpath:/META-INF/resources/, classpath:/resources/, classpath:/static/, classpath:/public/] Rest风格请求处理
Rest 风格支持使用HTTP请求方式动词来表示对资源的操作 请求方式:/monster GET-获取怪物 DELETE-删除怪物 PUT-修改怪物 POST-保存妖怪 细节 1、客户端是PostMan 可以直接发送Put、delete等方式请求可不设置Filter 2、如果要SpringBoot支持页面表单的Rest功能, 则需要注意如下细节 需要在application.yml 启用filter功能否则无效 Rest风格请求核心Filter HiddenHttpMethodFilter 表单请求会被 HiddenHttpMethodFilter 拦截 , 获取到表单 _method 的值再判断是PUT/DELETE/PATCH spring:mvc:hiddenmethod:filter:enabled: true 没有视图解析器会输出abc否则就走视图解析器定位的页面 使用Controller return xxx; 1、先看Controller有没有对应的[没有配置视图解析器] 2、如果配置视图解析器就定位页面 1、页面在静态目录下 spring:view:suffix: .htmlprefix: / 2、更改静态资源访问路径view需要和static-path-pattern保持一致 spring:mvc:static-path-pattern: /res/**view:suffix: .htmlprefix: /res/ 接收参数相关注解
PathVariable、RequestParam 在形参加上PathVariable MapStringString map可以把所有参数放进Map中但是有多个值(List)只会取第一个因为Map的key是唯一的 a href/monster/200/jackPathVariable-路径变量 monster/200/jack/a RequestHeader 获取 Http 请求头 RequestHeader里的参数名不区分大小写 可以通过Map获取所有Http请求头 CookieValue 获取Cookie还可以通过request 1. value cookie_key 表示接收名字为 cookie_key的cookie 2. 如果浏览器携带来对应的cookie , 那么 后面的参数是String ,则接收到的是对应的value 3. 后面的参数是Cookie ,则接收到的是封装好的对应的cookie RequestBody 处理Json数据 获取POST请求体 也可以封装到JavaBean对象中 输入hspedu 100输出 RequestAttribute、SessionAttribute 获取域的数据 复杂参数 自定义对象参数-自动封装 会自动封装要求提交的数据表单请求参数名和对象的字段名保持一致 自定义转换器
SpringBoot在响应客户端请求时将提交的数据封装成对象时使用了内置的转换器有124个 实现接口形式 向容器注入Bean形式 Converter 转换器接口 1、新建一个配置类使用Lite模式 2、注入Bean(返回类型是接口类型WebMvcConfigurer) 2.1.返回这个类型的对象并重写addFormatters方法并自定义转换器 2.2.使用匿名内部类实现接口的方法(转换器会注册到converters容器中 换种写法先创建自定义的转换器 如果添加了多个ConverterStringCar类型的转换器Hashmap的key是唯一的 后面的会覆盖前面的 处理Json
SpringBoot支持返回Json格式数据在启用Web开发场景时已经引入了相关依赖 会先经过return monster再经过转换器 底层仍然使用转换器根据请求带来的Accept类型发出请求时就已经指定了返回的格式 内容协商 可以手动设置Acceptapplication/json或application/xml等等在postman可以设置 默认按照Json格式返回springboot 依赖包含了 json 数据格式的 jar 依赖。 可以在pox.xml中引入xml依赖由于xml比json优先级高会显示xml 格式的数据类型 对于浏览器我们无法修改Accept的值 需要开启支持基于请求参数的内容协商功能在application.yaml中设置 在地址后加上?formatxxx xxx 就是要转换显示为xxx格式的数据的值 format可以修改 Thymeleaf
服务器渲染技术页面数据是在服务端进行渲染的并不是前后端分离
首先要声明名称空间xmlns:thhttp://www.thymeleaf.org 引入Thymeleaf依赖项目会自动完成配置 会直接使用视图解析到thymeleaf下的模板文件 拦截器
使用了Thymeleaf 与转换器写法差不多 1、实现HandlerInterceptor接口 2、拦截器注册到配置类中实现WebMvcConfigurer的addInterceptors 3、指定拦截规则 实现接口形式 /images/**是静态资源的图片也会发出请求需要放行 向容器注入Bean形式 文件上传
使用了Thymeleaf 设置上传文件大小 第一种 第二种 文件名随机数毫秒数实际文件名 分目录存放根据当前日期存放