zoukankan      html  css  js  c++  java
  • 关于Spring的一点东西

    1. Spring IoC 容器

    容器将创建对象,把它们连接在一起,配置它们,并管理他们的整个生命周期从创建到销毁。Spring 容器使用依赖注入(DI)来管理组成一个应用程序的组件。这些对象被称为 Spring Beans,通过阅读配置元数据提供的指令,容器知道对哪些对象进行实例化,配置和组装。配置元数据可以通过 XML,Java 注释或 Java 代码来表示。

    1. Spring 提供了以下两种不同类型的容器。Spring BeanFactory 容器,Spring ApplicationContext 容器
    2. Spring Bean 定义: bean 是一个被实例化,组装,并通过 Spring IoC 容器所管理的对象, 这些 bean 是由用容器提供的配置元数据创建的; class:这个属性是强制性的,并且指定用来创建 bean 的 bean 类。Name: 这个属性指定唯一的 bean 标识符。在基于 XML 的配置元数据中,你可以使用 ID 和/或 name 属性来指定 bean 标识符。
    3. Spring Bean 作用域(scope): 当在 Spring 中定义一个 bean 时,你必须声明该 bean 的作用域的选项(简单理解,就是每次需不需要重新new一个对象);

    singleton: 在spring IoC容器仅存在一个Bean实例,Bean以单例方式存在,默认值, prototype: 每次从容器中调用Bean时,都返回一个新的实例;

    request: 每次HTTP请求都会创建一个新的Bean,该作用域仅适用于WebApplicationContext环境;

    session:同一个HTTP Session共享一个Bean,不同Session使用不同的Bean,仅适用于WebApplicationContext环境

    1. Bean 的生命周期: init-method 属性指定一个方法,在实例化 bean 时,立即调用该方法。同样,destroy-method 指定一个方法,只有从容器中移除 bean 之后,才能调用该方法。在非 web 应用程序环境中使用 Spring 的 IoC 容器那么在 JVM 中你要注册关闭 hook
    2. Spring——Bean 后置处理器

    BeanPostProcessor 接口定义回调方法,你可以实现该方法来提供自己的实例化逻辑,依赖解析逻辑等

    1. Spring Bean 定义继承: Spring Bean 定义的继承与 Java 类的继承无关,但是继承的概念是一样的。你可以定义一个父 bean 的定义作为模板和其他子 bean 就可以从父 bean 中继承所需的配置。
    2. 依赖注入类型 & 描述

    Constructor-based dependency injection:当容器调用带有多个参数的构造函数类时,实现基于构造函数的 DI,每个代表在其他类中的一个依赖关系。

    Setter-based dependency injection:基于 setter 方法的 DI 是通过在调用无参数的构造函数或无参数的静态工厂方法实例化 bean 之后容器调用 beans 的 setter 方法来实现的。

    1. Spring 基于构造函数的依赖注入<constructor-arg ref="spellChecker"/>

    1.按照 参数的顺序,2.按照参数的类型,按照参数的下标

    1. Spring 基于设值函数的依赖注入:基于构造函数注入和基于设值函数注入中的 Beans.xml 文件的区别。唯一的区别就是在基于构造函数注入中,我们使用的是〈bean〉标签中的〈constructor-arg〉元素,而在基于设值函数的注入中,我们使用的是〈bean〉标签中的〈property〉元素。第二个你需要注意的点是,如果你要把一个引用传递给一个对象,那么你需要使用 标签的 ref 属性,而如果你要直接传递一个值,那么你应该使用 value 属性。
    2. Spring 注入内部 Beans

    <bean id="outerBean" class="...">

          <property name="target">

             <bean id="innerBean" class="..."/>

          </property>

       </bean>

    1. Spring 注入集合:<list>,<set>,<map>,<props>(<props> 名称和键都是字符串类型)
    2. Spring Beans 自动装配:autowire 属性为一个 bean 定义指定自动装配模式。
    3. Spring 自动装配 ‘byName’ Spring 容器看作 beans,在 XML 配置文件中 beans 的 auto-wire 属性设置为 byName。然后,它尝试将它的属性与配置文件中定义为相同名称的 beans 进行匹配和连接。如果找到匹配项,它将注入这些 beans,否则,它将抛出异常。
    4. Spring 自动装配 ‘byType’ 这种模式由属性类型指定自动装配。Spring 容器看作 beans,在 XML 配置文件中 beans 的 autowire 属性设置为 byType。然后,如果它的 type 恰好与配置文件中 beans 名称中的一个相匹配,它将尝试匹配和连接它的属性。如果找到匹配项,它将注入这些 beans,否则,它将抛出异常。
    5. Spring 基于注解的配置

    @Required 注释应用于 bean 属性的 setter 方法,它表明受影响的 bean 属性在配置时必须放在 XML 配置文件中,否则容器就会抛出一个 BeanInitializationException 异常;

    @Autowired 注释对在哪里和如何完成自动连接提供了更多的细微的控制。

    @Autowired 注释可以在 setter 方法中被用于自动连接 bean,就像 @Autowired 注释,容器,一个属性或者任意命名的可能带有多个参数的方法。

    Setter 方法中的 @Autowired:当 Spring遇到一个在 setter 方法中使用的 @Autowired 注释,它会在方法中视图执行 byType 自动连接

    1. 基于JAVA的配置

    带有 @Configuration 的注解类表示这个类可以使用 Spring IoC 容器作为 bean 定义的来源。@Bean 注解告诉 Spring,一个带有 @Bean 的注解方法将返回一个对象,该对象应该被注册为在 Spring 应用程序上下文中的 bean

    1. Spring框架中的AOP
  • 相关阅读:
    poj 2485 Highways 最小生成树
    hdu 3415 Max Sum of MaxKsubsequence
    poj 3026 Borg Maze
    poj 2823 Sliding Window 单调队列
    poj 1258 AgriNet
    hdu 1045 Fire Net (二分图匹配)
    poj 1789 Truck History MST(最小生成树)
    fafu 1181 割点
    减肥瘦身健康秘方
    人生的问题
  • 原文地址:https://www.cnblogs.com/wangjianly/p/9646671.html
Copyright © 2011-2022 走看看