• Spring学习笔记


    1.反相控制(IoC Inversion of Control)/依赖注入(DI Depdendency Injection)

    Martin Fowler在其文章中提出了“它们反转了哪方面的控制”的问题后,就为IoC起了一个更能说明这种模式特点的新名字"Depdendency Injection"

    依赖注入的三种方式:

    1)接口注入(interface Injection);

    2)Set注入(setter Injection);

    3)构造注入(constructor Injection);

    2.使用哪种注入方式:

    讨论这个问题其实就是在讨论:“要在对象建立时就准备好所有的资源,还是在对象建立好后,使用Set注入来设定”。

    3.在Spring中,Bean可以被定义为两种部署模式的一种:singleton 或 no-singleton(prototype) ,默认为singleton模式 。

    1)如果一个Bean被定义为singleton ,那么就只有一个共享的实例存在,所有对这个Bean的请求都会返回这个唯一的实例;

    2)如果一个Bean被定义为no-singleton(prototype) ,那么对这个Bean的请求都会创建一个新的Bean实例,可以看成类似new的操作;

    4.Bean的生命周期:定义初始化使用销毁

    1)定义:通常使用配置文档;

    2)初始化:

        <1>配置文档中使用init-method属性;

        在Bean中增加一个方法init,然后修改config.xml文档指定初始化方法;

        <2>实现org.springframework.bean.factory.InitializingBean接口(如果Bean实现了该接口,则它所有的必须的属性被BeanFactory设置后,会自动执行它的afterPropertiesSet()方法);

        Bean实现InitializingBean接口,增加一个afterPropertiesSet()方法完成初始化,然后修改config.xml;

        这两种方法效果是一样的,但第一种没有把Bean耦合于Spring,所以比较推荐第一种;

    3)使用:

        <1>使用BeanWrapper

        <2>使用BeanFactory

        <3>使用ApplicationContext

    4)销毁:

        <1>在配置文档中通过指定destroy-method属性来完成

        在Bean中增加一个方法cleanup(),用来完成销毁工作。然后修改config.xml文档指定销毁方法;

        <2>实现org.springframework.bean.factory.DisposableBean

        让Bean实现DisposableBean接口,增加一个distory()方法完成销毁,然后修改config.xml;

        这两种方法效果是一样的,但第一种没有把Bean耦合于Spring,所以比较推荐第一种;

    5.用ref的属性指定依赖,有3种模式:local、Bean、parent

       local与Bean最为常用

       <1>相同之处,两者都可能用Bean的Id进行参考引用,都可以对同一个XML中的Bean进行参考引用。

       <2>不同之处,后者可以用Bean的name进行参考引用,还可以对不同的XML中的Bean进行参考引用。

    6.Bean自动装配的5种模式

       Bean元素的autuwire属性来指定,共有5种模式,即byName、byType、constructor、autodetect和no

       显示的指定依赖,例如property和constructor-arg元素,总会覆盖自动装配。对于大型的应用不鼓励使用自动装配,因为它去除了参考依赖的透明性和清晰性。

    7.Bean依赖检查的4种模式

      默认不检查依赖关系(借助依赖检查来实现查看Bean的每个属性是否都设定完成的功能)。使用Bean元素的dependency-check属性来指定Bean的依赖检查共有4种模式:simple、object、all、none

    8.集合(ex:List(list)、Set(set)、Map(map)、Properties(props)的注入方式:先把要注入的信息注入到集合中,然后再把集合注入到相关Bean中。

    9.管理Bean

      分别使用BeanWrapper、BeanFactory、ApplicationContext管理Bean。

      BeanWrapper封装了Bean的一个行为,提供了设置了获得属性值的功能。通过BeanWrapper可以获得Bean的属性描述、查询只读和可写属性。

      BeanFactory实际上是实例化、配置和管理众多Bean的容器。这些Bean会彼此合作,从来彼此产生依赖。

      ApplicationContext建立在BeanFactory之上,并增加了其它功能,例如对国际化的支持、获取资源和事件传递等。ApplicationContext是BeanFactory的完全超集。

      三种比较:BeanWrapper其实没有用到Spring配置文件,而且只能对单个Bean进行设定。常用的是BeanFactory和ApplicationContext。

    10.ApplicationContext的更强功能(在BeanFactory的基本功能之外的其他功能)

       

  • 相关阅读:
    eclipse编写js代码没有提示
    eclipse安装阿里编码规约插件
    eclipse汉化
    异常: Recieved SHUTDOWN signal from Resourcemanager ,Registration of NodeManager failed, Message from ResourceManager: NodeManager from localhost doesn't satisfy minimum allocations, Sending SHUTDOWN s
    异常: Call From * 9000 failed on connection exception: java.net.ConnectException: Connection refused: no further information; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused
    异常:android.os.NetworkOnMainThreadException
    异常:getHibernateFlushMode is not valid without active transaction; nested exception is org.hibernate.HibernateException: getHibernateFlushMode is not valid without active transaction getHibernateFlu
    异常: Bean named 'org.springframework.transaction.interceptor.TransactionInterceptor#0' is expected to be of type 'org.aopalliance.aop.Advice' but was actually of type 'org.springframework.transaction.i
    JVM GC算法
    设计模式-抽象工厂模式
  • 原文地址:https://www.cnblogs.com/SmileX/p/5127785.html
Copyright © 2020-2023  润新知