SpringBoot Web开发6-嵌入式容器
🤖🤖-摘要:本文介绍了SpringBoot Web开发中的嵌入式容器。讲解了Servlet容器及其三大组件,介绍了嵌入式服务器Tomcat、Jetty、Undertow的自动配置原理及Tomcat容器创建的具体方法。最后,文章也示范了如何在项目中切换服务器。 嵌入式容器Servlet容器:管理、运行Servlet组件的环境,一般指服务器 Servlet三大组件: Servlet, 处理请求 Filter, 过滤请求 Listener, 监听请求 自动配置原理浅析先从自动配置类开始 @AutoConfiguration(after = SslAutoConfiguration.class)@AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE)// 生效条件:实现ServletRequest接口的Servlet请求@ConditionalOnClass(ServletRequest.class)// 生效条件:是SERVLET类型的程序@ConditionalOnWebApplication(type = Type.SERVLET)// ...
AList+云盘+LskyPro 搭建大容量图床
🤖🤖-摘要:本文介绍了如何利用AList,云盘和LskyPro搭建大容量图床,避免了高额图床管理费,增加了访问速度,图片自我管理。提及了搭建过程,包括环境准备,AList和WebDAV服务的搭建,以及Lsky的安装和配置。 概述兰空官网: 兰空图床可以帮您保管大量无处安放的图片,数据可以自由选择储存驱动,支持主流第三方储存。作为一个助手,它不仅可以将您把图片以指定规则存放在指定位置,还有更多强大的功能来帮助您处理这些图片。 AList: 一个支持多种存储,支持网页浏览和 WebDAV 的文件列表程序支持多个存储提供商,包括本地存储、阿里云盘、OneDrive、Google Drive 等,且易于拓展支持所有 WebDAV 存储,这是一种用于访问文件的标准 云盘:本文以天翼云盘为例, 免费 30 GB 的空间, 支持 WebDAV 自建图床 特点 无需缴高额图床管理费 访问速度取决于自建服务器的配置 图片自治, 自己管理图片, 不用担心图床跑路或被墙 搭建 前提:需要公网服务器和已备案域名服务器安装宝塔, Docker, Nginx 1. AList使用 Docker ...
SpringBoot日志
🤖🤖-摘要:本文介绍了SpringBoot项目中日志的使用方法和操作步骤。包括默认日志的输出格式,如何修改默认格式,日志级别的设定,分组设定,文件输出及归档与切割。文章也提到日志系统的自定义配置以及如何切换日志组合,并且提供了日志使用的最佳实践。 SpringBoot日志 我的SpringBoot项目第三个模块 在前面SpringBoot快速入门中我们知道, 每个SpringBoot项目都会依赖核心启动器:spring-boot-starter, 核心启动器会依赖:spring-boot-starter-logging实现日志功能 spring-boot-starter-logging依赖Logback的日志实现和SLF4J桥接器,将其他日志实现桥接到SLF4J 即SLF4J+Logback的日志组合. 为什么日志不用SpringBoot的自动配置??? 日志是系统启动就要使用, xxxAutoConfiguration是系统启动好了以后放好的组件,后来用的. 日志是利用监听器机制配置好的,ApplicationListener 默认日志2023-06-12T ...
Java日志体系
🤖🤖-摘要:本文介绍了Java的日志体系,包括日志的含义、用途和重要性。涵盖了几种常见的日志框架如Log4j、JUL、JCL、SLF4J、Logback和Log4j2的详细介绍,包括它们的优势、劣势和工作机制。推荐使用SLF4J做日志门面,配合Logback或Log4j2做日志实现。 日志记录了系统行为的时间, 地点, 状态等相关信息, 能够帮助我们了解并监控系统状态,在发生错误或者接近某种危险状态时能及时提醒我们处理, 同时在系统产生问题, 能够帮助我们快速定位, 诊断问题. 在生产环境中日志可能是我们了解系统运行状况的唯一方式, 其重要性无需赘述总结如下优点: 记录系统行为 监控系统状态 提示系统风险 定位系统问题 System.out同样可以打印信息, 为什么不用System.out.print("")? 难定位System.out.print输出的日志只打印在控制台, 没有存储到一个日志文件中, 且格式不统一, 在生产环境这样打印出来很难定位信息, 意义不大. 性能弱public void print(String s) { w ...
SpringBoot自动配置原理浅析
🤖🤖-摘要:本文介绍了SpringBoot自动配置的原理, 包括自动配置流程,核心配置流程以及如何实施自动配置。首先导入’starter’以获得来自’autoconfigure’包的配置, 然后使用‘@EnableAutoConfiguration’自动载入所有自动配置类。根据条件选择需要的配置类后,上述类将使用由配置文件中的特定前缀属性值提取而成的组件,从而实现自动配置。 我的SpringBoot项目第二个模块 在日常开发中, 通常我们只需要引入某个场景启动器, 再加上一些相应的配置即可, 无需费心复杂的整合操作, 这也是 SpringBoot 的强大之处. SpringBoot 是如何省去繁杂的整合过程的呢? 接下来按照流程一步一步分析. SpringBoot自动配置流程1.导入starter以web场景为例, 导入了web开发场景 场景启动器导入了相关场景的所有依赖, 如下: starter-json,starter-tomcat,springMVC 每个场景启动器都引入了一个spring-boot-starter, 核心场景启动器 核心场景启动器引入了spri ...
SpringBoot中常见注解
🤖🤖-摘要:本文介绍了SpringBoot中的常见注解,包括基于XML的配置方式和注解方式. 详解了常见注解,如:@Component及其衍生组件、@Configuration和@Bean、@ComponentScan和@ComponentScan.Filter、@Scope和@Lazy等,还单独阐述了条件注解和属性绑定的使用。 Spring 开始是使用的XML的配置方式, 但随着配置内容的增加, 编写XML配置文件的方式不仅繁琐, 而且还很容易出错.另外,每个项目都编写大量的XML文件来配置Spring, 也大大增加了项目维护的复杂度.往往很多个项目的Spring XML文件的配置大部分是相同的, 只有很少量的配置不同, 这也造成了配置文件上的冗余Spring注解驱动来开发, 你会发现以上这些问题都将不存在.SpringBoot 则从一开始就改为全注解驱动. 基于XML配置方式 resources/ioc.xml <bean id="person" class="com.fredo.bean.Person"> ...
SpringBoot快速入门
🤖🤖-摘要:本文介绍了SpringBoot的快速开发流程、遇到问题的解决办法、特点和应用分析,主要包括依赖管理机制、自动装配机制,以及自动配置流程细节梳理。同时,详细解析了SpringBoot中各种配置和注解的使用。 我的SpringBoot项目第一个模块 快速开发按照官网一步一步操作即可:https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started.html#getting-started.first-application 可能遇到的问题pom.xml中出现Provides transitive vulnerable dependency maven:org.yaml:snakeyaml:1.33警告 告警原因:Maven项目中使用了一个被认为是有漏洞的依赖项,并且这个依赖项也被其他依赖项所传递 org.yaml:snakeyaml:1.33这个库是存在漏洞 解决警告:升级依赖项 在中央仓库搜索无告警版本: https://mvnrepository.com/ 在Mave ...
Markdown 中的数学公式
🤖🤖-摘要:本文介绍了各种LaTex代码和其对应的数学表达式,包括希腊字母表,常见符号,箭头,常见数学公式以及复杂表达式如矩阵和方程组等。 希腊字母表$\alpha$ 效果: $\alpha$ $\beta$ 效果: $\beta$ $\chi$ 效果: $\chi$ $\delta$ 效果: $\delta$ $\Delta$ 效果: $\Delta$ $\epsilon$ 效果: $\epsilon$ $\eta$ 效果: $\eta$ $\Gamma$ 效果: $\Gamma$ $\iota$ 效果: $\iota$ $\kappa$ 效果: $\kappa$ $\lambda$ 效果: $\lambda$ $\Lambda$ 效果: $\Lambda$ $\mu$ 效果: $\mu$ $\nabla$ 效果: $\nabla$ $\nu$ 效果: $\nu$ $\omega$ 效果: $\omega$ $\Omega$ 效果: $\Omega$ $\phi$ 效果: $\phi$ $\Phi$ 效果: $\Phi$ $\pi$ 效 ...
Markdown 常用语法
🤖🤖-摘要:本文介绍了MarkDown编辑的多种技巧,包括字体的加粗、斜体、大小调整、颜色改变,和文本的换行、横线、链接、分页、折叠等效果的生成方法,以及如何嵌入文件、网络图片和视频 文本相关加粗$\mathbf{你好啊}$ 普通: 你好啊效果: $\mathbf{你好啊}$ **你好啊** 效果: 你好啊 斜体$\mathit{世界}$ 效果: $\mathit{世界}$ *世界* 效果: 世界 大小$\tiny 你好(tiny)$$\scriptsize 你好(scriptsize)$$\small 你好(small)$$\normalsize 你好(normalsize)$$\large 你好(large)$$\Large 你好(Large)$$\huge 你好(huge)$$\Huge 你好(Huge)$ 效果:$\tiny 你好(tiny)$ $\scriptsize 你好(scriptsize)$ $\small 你好(small)$ $\normalsize 你好(normalsize)$ $\large 你好(l ...
Vue路由
概述路由其实是网络工程中的一个术语 在架构一个网络时,非常重要的两个设备就是路由器和交换机 生活中都会用到路由器 路由器主要维护的是一个映射表(IP -> mac 地址) 映射表会决定数据的流向 web 的发展主要经历了这样一些阶段 后端路由阶段 前后端分离阶段 单页面富应用(SPA) 后端路由阶段早期的网站开发整个 HTML 页面是由服务器来渲染的 服务器直接生产渲染好对应的 HTML 页面, 返回给客户端进行展示 一个页面有自己对应的网址, 也就是 URL URL 会发送到服务器, 服务器会通过正则对该 URL 进行匹配, 并且最后交给一个 Controller 进行处理 Controller 进行各种处理, 最终生成 HTML 或者数据, 返回给前端 这种情况下渲染好的页面, 不需要单独加载任何的 js 和 css, 可以直接交给浏览器展示, 这样也有利于 SEO 的优化 缺点: 整个页面的模块由后端人员来编写和维护 前端开发人员如果要开发页面, 需要通过 PHP 和 Java 等语言来编写页面代码 HTML 代码和数据以及对应的逻辑会混在一起, 编写和维护都 ...
