1 | BeanFactory |
1 | ObjectFactory |
1 | FactoryBean |
1 | HierarchicalBeanFactory 继承 beanFactory |
1 | ListableBeanFactory 直接继承 beanfactory |
1 | /* |
1 |
|
1 | AutowireCapableBeanFactory |
对于bean工厂, 除了提供获取此工厂的bean的方法之外,某些还需要获取所有的bean数量,bean信息,bean的id名等,,有些场景工厂需要继承,还有对工厂的bean通过注解进行自动注入,自己能够配置自己,所以有了下面的ListableBeanFactory,HierarchicalBeanFactory,AutowireCapableBeanFactory,ConfigurableBeanFactory这些子接口(单一职责,开闭原则,里氏替换原则)
1 | 继承 FactoryBeanRegistrySupport ConfigurableBeanFactory |
1 | 继承 AbstractBeanFactory AutowireCapableBeanFactory |
1 | 继承 AbstractAutowireCapableBeanFactory ConfigurableListableBeanFactory BeanDefinitionRegistry |
1 |
|
1 | /* |
1 | 继承 AliasRegistry |
1 | 继承 SimpleAliasRegistry SingletonBeanRegistry |
1 | 继承 DefaultSingletonBeanRegistry |
1 | 继承 AliasRegistry |
spring 把 工厂和 bean注册中心分离开,工厂就是提供bean的视图,而bean注册中心就是 在一个bean生成之后需要存储的地方,两者都是相辅相成的: (接口隔离原则)
1 | /* |
1 | /* |
1 | ResourceLoader |
1 | ResourcePatternResolver |
1 |
|
1 |
|
1 | /* |
1 | ApplicationContext |
1 | 继承 ApplicationContext Lifecycle Closeable |
1 | 继承 DefaultResourceLoader ConfigurableApplicationContext |
1 | 继承 AbstractApplicationContext BeanNameAware InitializingBean |
1 |
|
spring的ApplicationContext ,既然是一个应用程序的上下文,那么这个上下文需要包含程序启动到结束所需要的内容,例如 一个ListableBeanFactory用于获取所有的bean, 可以获取环境,资源解析器,消息源,事件发布
上下文除了 拥有这些东西之外,还要对这些东西可配置,可刷新 (依赖倒置原则 ,里氏替换原则,接口隔离原则)
1 |
|
1 | 继承 aware |
1 | 初始化之前处理完成后,调用 |
1 |
|
1 | /* |
1 |
|
1 | /* |
对于bean定义信息的读取,有多种多样,可以时xml,可以是类,还可以是其他,但是一定会有一个获取 bean注册中心的对象的方法,因为最终读取的bean信息会放到 注册中心,也要有环境来支持 bean信息的读取
(开闭原则,单一职责原则,里氏替换原则)
1 | /* |
1 |
|
1 | /* |
1 |
|
1 |
|
1 | /* |
spring 在bean工厂上也做了很多文章,在注册后置处理器之前,回调所有的beanfactory的后置处理,可以对bean工厂进行修改,也会调用bean注册的后置处理进行 bean信息注入,无论怎样,这样的设计可以自定义的增强bean工厂,而不是完全由spring控制
(开闭原则)
1 |
|
1 | 继承 BeanPostProcessor |
1 | 继承 InstantiationAwareBeanPostProcessor |
1 |
|
1 | /* |
spring的bean处理, 也不能由spring完全控制,因为spring根本不知道客户需要对bean进行这样的处理,所以抽出 后置处理器的接口,让用户来自定义实现对bean的增强
(开闭原则,单一职责原则,接口隔离)
1 |
|
1 | 继承 BeanDefinition BeanMetadataAttributeAccessor |
1 | 继承 AbstractBeanDefinition |
1 | 继承 AbstractBeanDefinition |
1 | 继承 AbstractBeanDefinition |
1 |
|
Apache log4j 2 是对log4j的升级版,参考了logback的一些优秀的设计,并且修复了一些问题
异常处理:logback中,appender中的异常不会被应用感知到,但是在log4j中,提供了一些异常处理机制
性能提升:log4j2相较于log4j和logback 都具有明显的性能提升
自动重载配置,参考了logback的设计,当然会提供自动刷新参数配置,可以动态修改配置而不需要重启应用
无垃圾机制,log4j2 在大部分情况下,都可以使用其设计的一套无垃圾机制,避免频繁的日志收集导致jvm的 gc
more >>tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia-plus根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true