• 关于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
  • 相关阅读:
    JS基础类型和引用类型
    ul的margin撑不开想要的距离的办法
    html中的列表
    BEM的命名规则
    意义模糊的函数签名……文档注释
    最基础,新手入门第一段代码
    Cookie的使用
    用servlet校验密码2
    用servlet进行用户名和密码校验
    登录页面
  • 原文地址:https://www.cnblogs.com/wangjianly/p/9646671.html
Copyright © 2020-2023  润新知