SpringBoot项目启动时初始化操作的6种方式
SpringBoot项目启动时初始化操作的6种方式1、监听容器刷新完成扩展点ApplicationListener<ContextRefreshedEvent>ApplicationContext事件机制是观察者设计模式实现的,通过ApplicationEvent和ApplicationListener这两个接口实现ApplicationContext的事件机制。 Spring中一些内置的事件如下: ContextRefreshedEvent:ApplicationContext 被初始化或刷新时,该事件被发布。这也可以在 ConfigurableApplicationContext接口中使用 refresh() 方法来发生。此处的初始化是指:所有的Bean被成功装载,后处理Bean被检测并激活,所有Singleton Bean 被预实例化,ApplicationContext容器已就绪可用。 ContextStartedEvent:当使用 ConfigurableApplicationContext (ApplicationContext子接口)接口中的 star...
spring5学习
代码地址: https://github.com/behappy-spring-study/spring5_study_source 容器与 bean1) 容器接口 BeanFactory 接口,典型功能有: getBean ApplicationContext 接口,是 BeanFactory 的子接口。它扩展了 BeanFactory 接口的功能,如: 国际化 通配符方式获取一组 Resource 资源 整合 Environment 环境(能通过它获取各种来源的配置信息) 事件发布与监听,实现组件之间的解耦 可以看到,我们课上讲的,都是 BeanFactory 提供的基本功能,ApplicationContext 中的扩展功能都没有用到。 演示1 - BeanFactory 与 ApplicationContext 的区别代码参考com.itheima.a01 包 收获💡通过这个示例结合 debug 查看 ApplicationContext 对象的内部结构,学到: 到底什么是 BeanFactory 它是 ApplicationContext 的父接...
探究spring的底层实现原理2
接上一篇[探究spring的底层实现原理1上一篇从理论到源码讲到了以下四点 BeanFactory Bean的整个生命周期 Bean的属性填充 依赖注入 这节就切合上一篇,手写一个简易版spring的小demo,看看我是怎样去实现的java <谨供参考> 应用程序上下文(启动类) 123ClassPathXmlApplicationContext:xml配置文件方式AH8q3dGK2f2vLZVgbRfLTjQPySe2yRaJHs:注解方式SpringApplication:SpringBoot方式 模拟注解方式启动 配置类,指定"spring"需要扫描的限定包路径 123@ComponentScan("org.xiaowu.xiaowu.spring.xiaowu")public class AppConfig {} 标注@Component的类则是需要被spring管理的 12345@Target({ElementType.TYPE})@Retention(Re...
探究spring的底层实现原理1
探究spring的底层实现原理1<谨供参考> 这篇文章我将尝试从以下几个方面配合源码讲解spring的原理,并在下一个篇章手写一个简易版spring的小demo来更透彻的分析spring项目是如何"动"起来的 BeanFactory Bean的整个生命周期 Bean的属性填充 依赖注入 先来看一张图(看不清可以右键打开) 这里需要说的一点是,spring的核心就是AbstractApplicationContext.refresh中的13个方法,关于refresh我会单独写BeanFactory12345678910以springboot项目为例,运行主入口类的SpringApplication.run会走到AbstractApplicationContext.refresh方法,从ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory()到registerListeners()都是在准备并创建BeanFactory的过程,而这个BeanFacto...
hexo基础seo优化
seo搜索引擎优化(Search Engine Optimization),它是一种通过分析搜索引擎的排名规律,了解各种搜索引擎怎样进行搜索,怎样抓取互联网页面,怎样确定特定关键词的搜索结果排名的技术.Google自动收录效果还不错,百度就差得远了 另外GitHub不允许百度的Spider爬取GitHub上的内容,但我仍会把百度相关部分粘贴出来 修改路径结构 permalink: :year:month:day/:title/ 网站收录谷歌 进入谷歌站长(https://search.google.com/search-console),选择第二个带前缀的 然后选择html标签认证, 将内容粘贴到主题可放置head标签的地方,随后,重新部署博客,再点击验证 百度 首先登陆百度搜索平台(https://ziyuan.baidu.com/site/index),点击**新增网站** 输入自己的网站 验证, 我选择的是html标签,然后在主题文件夹下找到放置head标签的地方,将代码粘贴进去, 然后重新提交. 之后在点击完...
利用github的actions实现blog的cicd
参考: https://zellwk.com/blog/github-actions-deploy/ 首先博客如果使用hexo搭建, 且借助hexo-deployer-git依赖进行远程上传的话, 则需要将repo设置为ssh方式, https方式是不支持的, 如下 12345deploy: type: git # Windows: https://github.com/wang-xiaowu/wang-xiaowu.github.io.git repo: git@github.com:wang-xiaowu/wang-xiaowu.github.io.git branch: master 当前样例为, 一个blog_source库(未公开)存储未编译md文档, 走cicd流程之后, 将编译好的资源利用hexo d的方式部署到另一个一个github源仓库(开源库) 首先配置ssh/private key1ssh-keygen -t rsa -b 4096 -C "943915349@qq.com" -f key 邮箱修改为本人邮箱 复...
定制化Gitbook在线文档服务
定制化gitbook在线文档服务项目介绍 定制化gitbook服务 安装部署教程 Docker 安装docker服务:https://docs.docker.com/install/#supported-platforms 安装docker-compose:https://docs.docker.com/compose/install/ 进入根目录执行 docker-compose up -d 本地试运行 安装 GitBook-cli npm install gitbook-cli -g cmd切到book下,gitbook 初始化 gitbook init注: 超过node10的版本,需替换掉/xxx/lib/node_modules/gitbook-cli/node_modules/npm/node_modules/graceful-fs/polyfills.js文件,或注释掉61-63 下载依赖项,执行 gitbook install 注: 4,5可选一个执行 服务形式启动,默认端口4000:执行gitbook serve 构建成静态文件:执行gitbook ...
记录hexo整合pwa的使用
pwa介绍 渐进式网络应用程式(英语:Progressive Web Apps,简称:PWA)是一种普通网页或网站架构起来的网络应用程式,但它可以以传统应用程式或原生移动应用程式形式展示给用户。这种应用程式形态视图将目前最为现代化的浏览器提供的功能与行动装置的体验优势相结合。 当你的网站实现了 PWA,那就代表了 用户可以添加你的博客到电脑 / 手机的桌面,以原生应用般的方式浏览你的博客 用户本地可以自动生成缓存,二次访问速度大大加快 用户可以离线浏览你的博客 下面的 PWA 实现方法借助了 Gulp 插件,在站点有内容更新时,可以弹窗提醒用户刷新页面。 背景 本文使用butterfly主题作为演示 虽然官方对pwa做了很好的集成,但是文档中介绍的并不全面,而且还有许多坑需要自己踩一遍,特此记录下 配置 本文使用Gulp 和 WorkBox组合进行配置pwa 克隆现成的butterfly demo项目,默认集成了hexo-offline和gulp https://github.com/jerryc127/butterfly.js.org.git 去除he...
记录valine和waline评论插件的使用
leancloud地址: https://console.leancloud.app/ butterfly主题已默认整合了这两个评论系统, 不需要再安装 Valine获取APP ID 和 APP Key请先登录或注册LeanCloud, 进入控制台后点击左下角创建应用 应用创建好以后,进入刚刚创建的应用,选择左下角的设置>应用Key,然后就能看到你的APP ID和APP Key了: 然后在主题配置文件中填好配置 WalineLeanCloud数据库+Vercel部署还是先进入leancloud, 然后记住id,key和masterkey Vercel 部署 (服务端) 点击上方按钮,跳转至 Vercel 进行 Server 端部署。 注 如果你未登录的话,Vercel 会让你注册或登录,请使用 GitHub 账户进行快捷登录。 输入一个你喜欢的 Vercel 项目名称并点击 Create 继续: 此时 Vercel 会基于 Waline 模板帮助你新建并初始化仓库,仓库名为你之前输入的项目名。 一两分钟后,满屏的烟花会庆祝你部署成功。此时点击...
Clickhouse解决连接/查询超时(Read timeout)
jdbc jdbc:clickhouse://{host}:{port}[/{database}]?socket_timeout=600000 datagrip等远程连接工具
