StringBean

【Spring】Bean的LifeCycle(生命周期)

牧云@^-^@ 提交于 2020-08-08 10:22:46
菜瓜:水稻,上次说Bean的LifeCycle,还没讲完 水稻:啥?说人话? 菜瓜:spring,bean,生命周期 水稻:哦哦,下次直接说人话。说正事,先从BeanFactory、ApplicationContext和FactoryBean开始说起吧 我们知道(你不一定知道)BeanFactory是Spring访问Bean容器的根接口,源码的注释: “The root interface for accessing a Spring bean container.” 而ApplicationContext继承自BeanFactory,也就是说它具有BeanFactory的属性和方法,并进一步完善(继承其他的接口) FactoryBean跟前两个关系就不怎么大了,它是spring提供给用户创建bean的口子,有一些bean创建过程复杂,或者依赖第三方包等(Mybatis-Spring中),可交给用户自己创建 菜瓜:嗯。。陷入沉思。。(欲言又止) 水稻:讲理论不给代码就是耍流氓 package com.vip.qc.postprocessor; import org.springframework.beans.factory.FactoryBean; import org.springframework.stereotype.Component; /** * @author

Spring:BeanDefinition&PostProcessor不了解一下吗?

冷暖自知 提交于 2020-07-25 08:06:29
水稻:这两天看了BeanDefinition和BeanFactoryPostProcessor还有BeanPostProcessor的源码。要不要了解一下 菜瓜:six six six,大佬请讲 水稻:上次我们说SpringIOC容器是一个典型的工厂模式 假如我们把Spring比作一个生产模型的大工厂,那么.class文件就是原材料。而BeanDefinition就是创建模型的模具。不管是传统的XML还是后面的注解,Spring在启动的时候都会创建一个扫描器去扫描指定目录下的.class文件,并根据文件的注解,实现的接口以及成员变量将其封装一个个的BeanDefinition。 比较重要的属性有id,class,构造函数封装类,属性封装类,factoryMethod等 在对象初始化之前Spring会完成BeanDefinition对象的解析并将其装入List容器beanDefinitionNames中,然后开始遍历该容器并根据BeanDefinition创建对象 菜瓜:sodasinei,BeanDefinition我了解了。它是创建bean的模板,类似于java创建对象依赖的class一样。那还有两个很长的单词是啥呢? 水稻:忽略掉后面老长的后缀,我们看BeanFactory和Bean是不是很亲切。PostProcessor被翻译成后置处理器,暂且我们把它看成是处理器就行

关于@webFilter使用@Order无效问题

∥☆過路亽.° 提交于 2019-11-30 14:19:56
前言 在 SpringBoot 系列文章的 《第七章:过滤器、监听器、拦截器》 中,小技巧中指出,可使用 @Order 设置过滤器的执行顺序。由于没有自己求证过,看了相关材料后,想当然的写进了文章中,这个进行更正下。 通过 过滤器名称 和设置 @Order 的方法都是不行的。抱歉了,各位。之后在编写文章时,会本着负责且持着大胆猜测小心求证的态度,会对相关事项进行核对的!再次,抱歉,误导了大家 这里要感谢简书网友: 形而上学本尊 ,指出此错误!再次感谢! 正确设置排序方式 《第七章:过滤器、监听器、拦截器》 也有指出,利用 FilterRegistrationBean 可以设置排序顺序。那是否还有其他方式呢。有的,只是这种方案不是很优雅。这里简单说明下。 先说结论:可以通过 过滤器 的类名进行约定排序。 浅谈ServletComponentScan注解的启动方式 既然遇到了,那就简单分析下使用 @WebFilter 和 @ServletComponentScan 的启动方式吧。 首先我们来看下,注解 @ServletComponentScan (删除了相关注解): @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Import(ServletComponentScanRegistrar