Spring小知识点

调用固定的初始方法和销毁方法,仅用于单例:框架

xml:
<bean id="user" class="com.action.UserAction" init-method="init" destroy-method="destroy"/>
annotation:
@PostConstruct && @PreDestroy

<alias name="fromName" alias="toName"/>函数

 
Spring的事件框架:
ApplicationEvent:容器事件,必须由ApplicationContext发布。
ApplicationListener:监听器,可由容器中的任何监听器bean担任
 
传统JavaBean和Spring中的bean存在以下区别:
1, 用处不一样:传统lavaBean 更多地做为值对象传递参数,而Spring 中的bean 用处
几乎无所不在,任何应用组件均可被称为bean
2, 写法不一样:传统lavaBean 做为值对象,要求每一个属性都提供getter 和setter 方法:
但Spring 中的bean 只需为接受设值注入的属性提供setter 方法。
3, 生命周期不一样:传统lavaBean 做为值对象传递,不接收任何容器管理其生命周期:
Spring 中的bean 由Spring 管理其生命周期行为。
 
依赖检查:dependency-check(bean的属性
no:不进行依赖检查
simple:对基本类型和集合(除了合做者bean)进行依赖检查
objects:仅对合做者进行依赖检查
all:所有检查
 

lazy-init 设置只对scop属性为singleton的bean起做用post

若是一个设置了当即加载的bean1,引用了一个延迟加载的bean2,那么bean1在容器启动时被实例化,而bean2因为被bean1引用,因此也被实例化,这种状况也符合延迟加载的bean在第一次调用时才被实例化的规则。
 

解释Spring框架中bean的生命周期。spa

  1. Spring容器 从XML 文件中读取bean的定义,并实例化bean。
  2. Spring根据bean的定义填充全部的属性。
  3. 若是bean实现了BeanNameAware 接口,Spring 传递bean 的ID 到 setBeanName方法。
  4. 若是Bean 实现了 BeanFactoryAware 接口, Spring传递beanfactory 给setBeanFactory 方法。
  5. 若是有任何与bean相关联的BeanPostProcessors,Spring会在postProcesserBeforeInitialization()方法内调用它们。
  6. 若是bean实现IntializingBean了,调用它的afterPropertySet方法,若是bean声明了初始化方法,调用此初始化方法。
  7. 若是有BeanPostProcessors 和bean 关联,这些bean的postProcessAfterInitialization() 方法将被调用。
  8. 若是bean实现了 DisposableBean,它将调用destroy()方法

Bean 工厂和 Application contexts 有什么区别?xml

Application contexts提供一种方法处理文本消息,一个一般的作法是加载文件资源(好比镜像),它们能够向注册为监听器的bean发布事件。另外,在容器或容器内的对象上执行的那些不得不禁bean工厂以程序化方式处理的操做,能够在Application contexts中以声明的方式处理。Application contexts实现了MessageSource接口,该接口的实现以可插拔的方式提供获取本地化消息的方法。对象

ApplicationContext一般的实现是什么?接口

FileSystemXmlApplicationContext :此容器从一个XML文件中加载beans的定义,XML Bean 配置文件的全路径名必须提供给它的构造函数。
ClassPathXmlApplicationContext:此容器也从一个XML文件中加载beans的定义,这里,你须要正确设置classpath由于这个容器将在classpath里找bean配置。
WebXmlApplicationContext:此容器加载一个XML文件,此文件定义了一个WEB应用的全部bean。生命周期

相关文章
相关标签/搜索