32、启用 HTTP 响应压缩和编程式配置Web应用

★ 启用HTTP压缩

就是前端页面如果改动的比较多,那么响应就会比较慢,可以通过设置HTTP响应压缩来提高响应,如果前端改动少,那么就不需要启动这个响应压缩。

目的:为了提高HTTP响应数据在网络上的传输效率。

 ▲ 设置如下属性来启用HTTP响应压缩。
server.compression.enabled=true
 ▲ 设置如下属性指定当响应数据大于多少时才启用响应压缩
server.compression.min-response-size=1024
 ▲ 设置如下属性指定只有当响应是哪些MIME类型时才启用响应压缩
server.compression.mime-types=text/html, text/css

★ 用编程式的配置,来启用HTTP压缩

就是获取到 WebServer 这个Web服务器,然后修饰里面的一些东西,比如端口号,比如对某些前端页面启用 HTTP压缩 的功能。

方法有两种:

第一个:实现WebServerFactoryCustomizer这个接口

第二个:在容器中自定义ConfigurableWebServerFactory 这个bean

两者都是为了定制 WebServer 这个Web服务器,启用 HTTP 压缩

=================================================

ConfigurableWebServerFactory ------它的作用负责生成嵌入式Web服务器。

ConfigurableWebServerFactory 的两个子接口:

ConfigurableReactiveWebServerFactory(生成响应式的web服务器), ConfigurableServletWebServerFactory,(生成基于Servlet的Web服务器)

方式有两种:

A. 定义一个实现WebServerFactoryCustomizer接口的Bean实例。

接口中的customize()方法用于对容器中默认的ConfigurableWebServerFactory进行定制。

ConfigurableWebServerFactory就是根据定制的结果来负责生成WebServer,

因此程序对ConfigurableWebServerFactory所做的设置,最终其实是作用于WebServer

=================================================================

B. 直接在容器中定义一个自己的ConfigurableWebServerFactory Bean,

但实际返回值类型必须声明为它的子接口: ConfigurableServletWebServerFactory或ConfigurableReactivetWebServerFactory

【自动配置的替换原则】:一旦你在容器中配置了某个Bean后,Spring Boot将不再自动配置该Bean。

这种方式的本质就是用自定义的ConfigurableWebServerFactory代替自动配置的该Bean

由于ConfigurableWebServerFactory是自定义配置的,因此想怎么设置就怎么设置

这种方式的好处是:用了自定义的WebServerFactory代替了自动配置的WebServerFactory,因此非常直观,可以获取全部控制权

缺点是:不够灵活,以后如果要切换服务器,必须手动修改代码。

代码演示:

方法1:实现WebServerFactoryCustomizer接口,做一个定制化器,来为 WebServer 这个Web服务器 进行定制。

这个定制化器是如何实现它的功能。

给这个定制话器这个类添加 @Compoment 注解,把这个组件交给spring容器管理,

在项目启动的时候就会来加载这个组件,然后执行这个组件的代码,

代码中的compression.setEnabled(true) 就是启动http压缩功能,

通过端口号就可以看出来这个组件的http压缩功能已经实现了,虽然我们没有去调用,当时spring容器会自动帮我们加载。

ConfigurableWebServerFactory就是根据定制的结果来负责生成WebServer,

因此程序对ConfigurableWebServerFactory所做的设置,最终其实是作用于WebServer

WebServer就是springboot这个项目的 Web 服务器。这个Web服务器就有项目的一些比如端口号之类的,想要获得这些东西,就可以从这个webserver下手。

方法2:

上面的定制化器是实现WebServerFactoryCustomizer接口,这个接口的参数是ConfigurableWebServerFactory。

这次的需要是我们自己自定义一个 ConfigurableServletWebServerFactory bean。

ConfigurableWebServerFactory ------它的作用负责生成嵌入式Web服务器。  

ConfigurableWebServerFactory 的两个子接口:
ConfigurableReactiveWebServerFactory(生成响应式的web服务器), 
ConfigurableServletWebServerFactory,(生成基于Servlet的Web服务器) 

@configuration注解

@configuration 注解是一个用于标记一个类的注解,用于表示该类是一个配置类。它通常与 Spring 框架一起使用,用于配置和定义 Bean 对象及其之间的依赖关系。
@Configuration 注解的作用是告诉 Spring 容器,被注解的类中可能包含用 @Bean 注解标记的方法,这些方法将会在 Spring 容器启动时被调用,创建并初始化相应的 Bean 对象。

这个也算是在定制自己的 webserver 这个web 服务器,类是配置类,里面有一个@Bean注解修饰的方法,在项目启动的时候被加载。

相关推荐
Json____8 分钟前
学法减分交管12123模拟练习小程序源码前端和后端和搭建教程
前端·后端·学习·小程序·uni-app·学法减分·驾考题库
上趣工作室21 分钟前
vue2在el-dialog打开的时候使该el-dialog中的某个输入框获得焦点方法总结
前端·javascript·vue.js
家里有只小肥猫21 分钟前
el-tree 父节点隐藏
前端·javascript·vue.js
fkalis22 分钟前
【海外SRC漏洞挖掘】谷歌语法发现XSS+Waf Bypass
前端·xss
zxg_神说要有光1 小时前
自由职业第二年,我忘记了为什么出发
前端·javascript·程序员
陈随易1 小时前
农村程序员-关于小孩教育的思考
前端·后端·程序员
云深时现月1 小时前
jenkins使用cli发行uni-app到h5
前端·uni-app·jenkins
昨天今天明天好多天1 小时前
【Node.js]
前端·node.js
2401_857610032 小时前
深入探索React合成事件(SyntheticEvent):跨浏览器的事件处理利器
前端·javascript·react.js
江梦寻2 小时前
思科模拟器路由器配置实验
开发语言·网络·网络协议·学习·计算机网络