Spring-IOC
文章平均质量分 93
kk
这是一条海鱼
这个作者很懒,什么都没留下…
展开
-
Spring事件监听器之@EventListener原理
简介@EventListener是一种事件驱动编程在spring4.2的时候开始有的,早期可以实现ApplicationListener接口, 想了解下ApplicationListener的可以参考下这篇文章https://blog.csdn.net/baidu_19473529/article/details/86683365Spring为我们提供的一个事件监听、订阅的实现,内部实现原理是观察者设计模式;为的就是业务系统逻辑的解耦,提高可扩展性以及可维护性。事件发布者并不需要考虑谁去监听,监听具体的实原创 2021-07-25 23:58:33 · 2019 阅读 · 1 评论 -
SpringBean重要对象之BeanDefinition的介绍
1111原创 2021-07-03 23:44:48 · 416 阅读 · 0 评论 -
springBean注册之@PropertySource和@ImportResource注解解析
原文地址: Spring中@PropertySource和@ImportResource的区别,以及各自的实现原理解析前言@PropertySource和@ImportResource或许很多人都用过,并且都还没有用错。但是若真把他俩拿过来一起的时候,却有点傻傻分不清楚了是的,他俩都是向容器中导入Bean/属性信息,但是使用起来还是有很大的区别的,因此本文主要针对于他俩的区别,顺便从一定的原理的角度做一个解释,希望大家以后能区分开来。在讲解之前,可以记住一个通用的的结论:@PropertySo.转载 2020-06-14 18:55:57 · 394 阅读 · 0 评论 -
SpringBean注册之@Conditional注解解析
前言@Conditional是Spring4新提供的注解,它的作用是按照一定的条件进行判断,满足条件给容器注册bean。@Conditional的定义://此注解可以标注在类和方法上@Target({ElementType.TYPE, ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME) @Documentedpublic @interface Conditional { Class<? extends Condition原创 2020-06-14 17:25:16 · 370 阅读 · 0 评论 -
static关键字解除Bean对象间的依赖
前言本文基本上是借鉴于YourBatman的这篇文章 static关键字真能提高Bean的优先级吗?答:真能,只是在原理分析部分加入了自己的理解我认为static关键字是解除Bean对象间的依赖,而不是提高Bean的优先级警告一:来自BeanPostProcessorChecker这是最为常见的一种警告,特别当你的工程使用了shiro做鉴权框架的时候。在我记忆中这一年来有N多位小伙伴问过我此问题,可见一斑。@Configurationclass RootConfig { RootC原创 2020-06-14 16:48:58 · 370 阅读 · 0 评论 -
SpringIOC工具类之任务执行时间监视器StopWatch
前言StopWatch是spring-core包下的一个工具类,他可以帮助我们对一个或者多个任务的运行时间进行统计。一、源码public class StopWatch { //id,只有get方法 private final String id; private boolean keepTaskList = true; //储存每个任务的信息 private final...原创 2020-05-04 03:18:40 · 305 阅读 · 0 评论 -
SpringBean注册之后置处理器BeanPostProcessor
前言本文重点研究spring中各种BeanPostProcessor的实例化和调用时机一、BeanPostProcessor的实例化地点:发生在refresh方法的registerBeanPostProcessors(beanFactory)模块中final class PostProcessorRegistrationDelegate { public static void r...原创 2020-05-02 02:09:08 · 613 阅读 · 0 评论 -
SpringBean实例化之bean对象的实例化过程解析
前言SpringBean实例化之bean对象创建前的验证工作一文中我们已经了解了bean对象的实例化前的验证工作,本文开始研究bean对象的实例化过程初始化单个单例bean的核心步骤protected Object doCreateBean(final String beanName, final RootBeanDefinition mbd, final @Nullable Object[...原创 2020-05-02 02:07:40 · 511 阅读 · 0 评论 -
SpringBean实例化之CommonAnnotationBeanPostProcessor解析
前言CommonAnnotationBeanPostProcessor这个BeanPostProcessor通过继承InitDestroyAnnotationBeanPostProcessor对@javax.annotation.PostConstruct和@javax.annotation.PreDestroy注解的支持。以及依据bean name依赖注入的@javax.annotation....原创 2020-05-02 02:04:00 · 2267 阅读 · 0 评论 -
SpringBean实例化之@Autowired应用与AutowiredAnnotationBeanPostProcessor解析
前言AutowiredAnnotationBeanPostProcessor是一个bean后置处理器,主要用于对@Autowired和@Value注解解析一、AutowiredAnnotationBeanPostProcessor类说明public class AutowiredAnnotationBeanPostProcessor extends InstantiationAwareBe...原创 2020-04-30 00:38:15 · 883 阅读 · 0 评论 -
springBean注册之后置处理器BeanFactoryPostProcessor和BeanDefinitionRegistryPostProcessor
前言本文重点研究BeanFactoryPostProcessor和BeanDefinitionRegistryPostProcessor的区别和执行实际一、方法说明1、BeanFactoryPostProcessorBeanFactoryPostProcessor允许使用者修改容器中的BeandefinitionsBeanFactoryPostProcessor可以与Beandefini...原创 2020-04-08 16:09:02 · 375 阅读 · 0 评论 -
springBean注册之@Bean注解解析
前言本文重点研究@Bean注解的使用与源码解析从 SpringIOC源码:@Configuration配置类解析过程一文中,Spring通过一系列操作后,会在ConfigurationClassParser类的doProcessConfigurationClass方法中解析@Bean,本文源码讲解就从这里开始一、@Bean的使用设置别名,如果未指定,则bean的名称是带注释的方法的名称。如...原创 2020-04-06 22:57:01 · 484 阅读 · 0 评论 -
springBean注册之@ComponentScan注解解析
前言本文重点研究@ComponentScan注解的使用与源码解析从 SpringIOC源码:@Configuration配置类解析过程一文中,Spring通过一系列操作后,会在ConfigurationClassParser类的doProcessConfigurationClass方法中解析@ComponentScan,本文源码讲解就从这里开始一、@ComponentScan的使用@Com...原创 2020-04-06 22:36:35 · 325 阅读 · 0 评论 -
springBean注册之@Import注解解析
前言本文重点研究@Import注解的使用与源码解析从 SpringIOC源码:@Configuration配置类解析过程一文中,Spring通过一系列操作后,会使用ConfigurationClassParser类的processImports方法解析@Import,本文源码讲解就从这里开始一、@Import的使用说明:只能标注在类上,属性是 Class<?>[] value...原创 2020-04-05 21:37:15 · 432 阅读 · 0 评论 -
SpringBean注册之@Configuration配置类解析过程
前言使用@Configuration注解标注配置类,大家已经驾轻就熟了,但spring对Configuration配置类的解析是怎样的,其中又涉及哪些关键点和值得探究的地方,下面主要对这些疑点进行分析;首先分析下ConfigurationClassPostProcessor,该类主要完成@Configuration类的处理ConfigurationClassPostProcessor的注册时...原创 2020-03-26 00:37:26 · 1052 阅读 · 0 评论 -
Spring IOC容器注解启动流程浅析
前言refresh()方法所有的ApplicationContext子类都没重写,只有AbstractApplicationContext里有实现过(接口定义在ConfigurableApplicationContext),因此我们看起来也容易了,直接上源码~public void refresh() throws BeansException, IllegalStateException {...原创 2020-03-02 00:16:47 · 554 阅读 · 1 评论 -
Spring实例化之AutowireCandidateResolver深度分析,解析@Lazy、@Qualifier注解的原理
前言关于AutowireCandidateResolver接口,可能绝大多数小伙伴都会觉得陌生。但若谈起@Autowired、@Primary、@Qualifier、@Value、@Lazy等注解,相信没有小伙伴是不知道的吧。备注:@Primary这个注解是在解析bean定义时候处理的,解析成为isPrimary()从而在beanFactory里得到使用AutowireCandidateRe...原创 2020-02-28 16:06:23 · 738 阅读 · 0 评论 -
SpringBean重要对象之BeanFactory的介绍
BeanFactory有3大字接口:ListableBeanFactory,HierarchicalBeanFactory,AutowireCapableBeanFactory继承关系图如下(忽略ApplicationContext相关类)1、ListableBeanFactory通过这个接口,我们可以获取多个 Bean,而最顶层 BeanFactory 接口的方法都是获取单个 Bean的...原创 2020-02-22 17:27:13 · 1610 阅读 · 0 评论 -
SpringBean实例化之bean对象创建前的验证工作
前言:生命周期,简要过程如下:1 . 通过构造器或工厂方法创建Bean实例2 . 为Bean的属性设置值和其他Bean的引用3 . 调用Bean的构造器4 . 将Bean实例传递给Bean后置处理器的PostProcessBeforeInitization方法5 . 调用bean的初始化方法6 . 调用Bean实例传递给Bean后置处理器的PostProcessAfterInitiza...原创 2020-02-21 23:05:13 · 393 阅读 · 0 评论 -
springBean应用之Bean的作用域和注入
一、@Scope1 默认单例模式,全局有且仅有一个实例,容器初始化就会创建对象2 prototype原型模式,每次获取Bean的时候会有一个新的实例,容器启动时不会创建对象二、@Lazy@Lazy注解注解的作用主要是减少springIOC容器启动的加载时间默认值是true,代表延时,查询A对象时,不会把B对象也查询出来,只会在用到A对象中B对象时才会去查询lazy=false,代表不延...原创 2020-02-21 19:57:26 · 1144 阅读 · 0 评论 -
SpringBean应用之Bean的注册
1、包扫描@ComponentScan@ComponentScan只会扫描有以下四种注解中某一注解的类,并管理他们把他们加载到上下文中@Component:基本注解,标识了一个受Spring管理的组件,实际上只会扫描@Component,只是其他3个都继承于他@Repository:标识持久层组件@Service:标识服务层(业务层)组件@Controller:标识表现层组件他们可以...原创 2020-02-19 16:38:20 · 233 阅读 · 0 评论