SSM框架

一、 Spring IoC/AOP 

1 IoC

“控制反转(IoC)”也称为“依赖注入(DI)”,是一个定义对象依赖的过程,对象只和构造参数,工厂方法参数,对象实例属性或工厂方法返回相关。容器在创建这些 bean 的时候注入这些依赖。这个过程是一个反向的过程,所以命名为依赖反转,对象实例的创建由其提供的构造方法或服务定位机制来实现。IoC 最大的好处就是“ 解耦 ”。

1.1 容器初始化流程

new ClasspathXmlApplicationContext();       ContextLoaderListener / DispatcherServlet -> WebApplicationContext

ApplicationContext 容器的初始化流程主要由 AbstractApplicationContext 类中的 refresh方法实现

BeanFactory 的构建。 BeanFactory 是 ApplicationContext 的父接口。是 spring 框架中的顶级容器工厂对象。BeanFactory 只能管理 bean 对象。没有其他功能。如:aop 切面管理,propertyplaceholder 的加载等。 构建 BeanFactory 的功能就是管理 bean 对象 

创建 BeanFactory 中管理的 bean 对象。postProcessBeanFactory - 加 载 配 置 中 BeanFactory 无 法 处 理 的 内 容 。 如 :propertyplacehodler 的加载。
invokeBeanFactoryPostProcessors - 将上一步加载的内容,作为一个容器可以管理的 bean对象注册到 ApplicationContext 中。 底层实质是在将postProcessBeanFactory 中加载的内容包装成一个容器 ApplicationContext 可以管理的 bean 对象。
registerBeanPostProcessors - 继续完成上一步的注册操作。配置文件中配置的 bean 对象都创建并注册完成。
initMessageSource - i18n,国际化。初始化国际化消息源。
initApplicationEventMulticaster - 注册事件多播监听。如 ApplicationEvent 事件。是 spring框架中的观察者模式实现机制。
onRefresh - 初始化主题资源(ThemeSource)。spring 框架提供的视图主题信息。
registerListeners - 创建监听器,并注册。
finishBeanFactoryInitialization - 初始化配置中出现的所有的 lazy-init=false 的 bean 对象。且 bean 对象必须是 singleton 的。
finishRefresh - 最后一步。 发布最终事件。生命周期监听事件。 spring 容器定义了生命周期接口。可以实现容器启动调用初始化,容器销毁之前调用回收资源。Lifecycle 接口。

 

1.2  多容器/父子容器概念

Spring 框架允许在一个应用中创建多个上下文容器。但是建议容器之间有父子关系。可以通过 ConfigurableApplicationContext 接口中定义的 setParent 方法设置父容器。一旦设置父子关系,则可以通过子容器获取父容器中除 PropertyPlaceHolder 以外的所有资源,父容器不能获取子容器中的任意资源(类似 Java 中的类型继承)。

典型的父子容器: spring 和 springmvc 同时使用的时候。ContextLoaderListener 创建的容器是父容器,DispatcherServlet 创建的容器是子容器。
保证一个 JVM 中,只有一个树状结构的容器树。可以通过子容器访问父容器资源

 

1.3  p  域/c  域
Spring2.0 之后引入了 p(property 标签)域、Spring3.1 之后引入了 c(constractor-arg 标签)域。可以简化配置文件中对

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值