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注解修饰的方法,在项目启动的时候被加载。

相关推荐
gnip3 小时前
企业级配置式表单组件封装
前端·javascript·vue.js
一只叫煤球的猫4 小时前
写代码很6,面试秒变菜鸟?不卖课,面试官视角走心探讨
前端·后端·面试
excel5 小时前
Three.js 材质(Material)详解 —— 区别、原理、场景与示例
前端
掘金安东尼5 小时前
抛弃自定义模态框:原生Dialog的实力
前端·javascript·github
hj5914_前端新手9 小时前
javascript基础- 函数中 this 指向、call、apply、bind
前端·javascript
薛定谔的算法9 小时前
低代码编辑器项目设计与实现:以JSON为核心的数据驱动架构
前端·react.js·前端框架
Hilaku9 小时前
都2025年了,我们还有必要为了兼容性,去写那么多polyfill吗?
前端·javascript·css
yangcode9 小时前
iOS 苹果内购 Storekit 2
前端
LuckySusu9 小时前
【js篇】JavaScript 原型修改 vs 重写:深入理解 constructor的指向问题
前端·javascript
LuckySusu9 小时前
【js篇】如何准确获取对象自身的属性?hasOwnProperty深度解析
前端·javascript