本文尝试分析一下Spring 的 ApplicationContext体系的 接口设计,尝试理解为什么这么做,为什么接口这么设计.为什么这么去实现,为什么需要有这个方法,为什么 这样命名?接口.类.方法的 大致用途是什么? 是否是最合理的?是否有完善的空间? 是否 让一个 同样顶级人才来设计,是否会得到一样的 设计和实现? 简称: BeanFactory 简称bf ApplicationContext 简称ac ServletContext 简称sc BeanDefinition 简称bd  …
package com.thinkgem.jeesite.common.utils; import java.net.HttpURLConnection; import java.net.URL; import java.util.Date; import org.apache.commons.lang3.Validate; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.be…
Spring 容器 ApplicationContext(一)初始化过程 Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.html) 1. Spring ApplicationContext(一)初始化过程 2. Spring ApplicationContext(二)环境准备 3. Spring ApplicationContext(三)BeanFactory 初始化 4. Spring ApplicationContext(四…
Spring ApplicationContext(二)环境准备 Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.html) 本节介绍容器初始化的第一步:环境准备工作. prepareRefresh 函数主要是做些准备工作,例如对系统属性及环境变量的初始化及验证. protected void prepareRefresh() { this.startupDate = System.currentTimeMillis(); thi…
Spring ApplicationContext(六)BeanPostProcessor 产生回顾一下 ApplicationContext 初始化的几个步骤:第一步是刷新环境变量:第二步是刷新 beanFactory 并加载 BeanDefinition:第三步是对 beanFactory 进行功能扩展,如增加 SPEL 支持和属性编辑器:第四步是留给子类实现的. 上一节中向 Spring 中注册将执行了 BeanFactoryPostProcessor,本节则继续探讨一下 BeanPost…
Spring ApplicationContext(六)BeanPostProcessor 产生回顾一下 ApplicationContext 初始化的几个步骤:第一步是刷新环境变量:第二步是刷新 beanFactory 并加载 BeanDefinition:第三步是对 beanFactory 进行功能扩展,如增加 SPEL 支持和属性编辑器:第四步是留给子类实现的. 上一节中向 Spring 中注册将执行了 BeanFactoryPostProcessor,本节则继续探讨一下 BeanPost…
Spring ApplicationContext(八)事件监听机制 本节则重点关注的是 Spring 的事件监听机制,主要是第 8 步:多播器注册:第 10 步:事件注册. public void refresh() throws BeansException, IllegalStateException { // 8. 注册多播器,事件监听器的管理者 initApplicationEventMulticaster(); // 9. 专门留给子类初始化其它 bean 用,这是一个空的方法 on…
在搭建SpringMVC框架的时候遇到了这个问题 问题的原因: 就是没有找到applicatoincontext.xml这个文件, 因为idea自动生成的路径不正确 因此需要再web.xml里面, (对contextConfigLocation这个变量的) 将application.context.xml这个文件的路径进行修改, 将 /config/spring/applicationContext.xml 修改为 classpath:config/spring/applicationConte…
## 背景 最近来了个实习僧小弟,安排他实现对目标网站 连通性检测的小功能,简单讲就是将下边的shell 脚本换成Java 代码来实现 ``` 1#!/bin/bash 2URL="https://www.baidu" 3HTTP_CODE=`curl -o /dev/null -s -w "%{http_code}" "${URL}"` 4#echo $HTTP_CODE 5if [ $HTTP_CODE != '200' ];then 6cu…
前言 某天,浏览博客园的时候,对首页上面的一篇文章,标题为:<<一个普通类就能干趴你的springboot,你信吗?>>,文章链接:https://www.cnblogs.com/rongdi/p/11780204.html#4414216 很是感兴趣.点进去之后,大致看一下.该篇博文主要说的是在使用spring boot环境下想创建一个名为Environment的bean,结果发现创建不了,于是不断调试终于找到了“真理”. 说真的.这篇博文的内容非常长,主要也是记录调试过程的“流…