zoukankan      html  css  js  c++  java
  • spring一些简单小注意知识点

    Spring 配置详解

    <!-- Bean元素:使用该元素描述需要spring容器管理的对象
               class属性:被管理对象的完整类名.
               name属性:给被管理的对象起个名字.获得对象时根据该名称获得对象.  
                       可以重复.可以使用特殊字符.
               id属性: 与name属性一模一样.
                       名称不可重复.不能使用特殊字符.
               结论: 尽量使用name属性.
    -->
    <bean  name="student" class="com.lsk.Student" ></bean>
    <!--
    可以通过import属性导入其他spring配置文件
    <import resource="路径/*.xml"/>
    -->

    Spring 框架的思想

    (1)、IOC:Inverse Of Control,即控制反转,将对象创建的方式交给了 Spring 容器;

    (2)、DI:Dependency Injection,即依赖注入,IOC 的实现需要 DI 支持。

    Spring的两种容器

    (1)、Spring BeanFactory 容器
    它是最简单的容器,给 DI 提供了基本的支持,它用 org.springframework.beans.factory.BeanFactory 接口来定义。BeanFactory 或者相关的接口,如 BeanFactoryAware,InitializingBean,DisposableBean,在 Spring 中仍然存在具有大量的与 Spring 整合的第三方框架的反向兼容性的目的。

    在 Spring 中,有大量对 BeanFactory 接口的实现。其中,最常被使用的是 XmlBeanFactory 类。这个容器从一个 XML 文件中读取配置元数据,由这些元数据来生成一个被配置化的系统或者应用。

    在资源宝贵的移动设备或者基于 applet 的应用当中, BeanFactory 会被优先选择。否则,一般使用的是 ApplicationContext,除非你有更好的理由选择 BeanFactory。

    (2)、Spring ApplicationContext 容器

    该容器添加了更多的企业特定的功能,例如从一个属性文件中解析文本信息的能力,发布应用程序事件给感兴趣的事件监听器的能力。该容器是由 org.springframework.context.ApplicationContext 接口定义。

    ApplicationContext 包含 BeanFactory 所有的功能,一般情况下,相对于 BeanFactory,ApplicationContext 会被推荐使用。

    最常被使用的 ApplicationContext 接口实现(类):

    • FileSystemXmlApplicationContext:该容器从 XML 文件中加载已被定义的 bean。在这里,你需要提供给构造器 XML 文件的完整路径

    • ClassPathXmlApplicationContext:该容器从 XML 文件中加载已被定义的 bean。在这里,你不需要提供 XML 文件的完整路径,只需正确配置 CLASSPATH 环境变量即可,因为,容器会从 CLASSPATH 中搜索 bean 配置文件。

    • WebXmlApplicationContext:该容器会在一个 web 应用程序的范围内加载在 XML 文件中已被定义的 bean。

    Spring 两种注入方式

    (1)、set方法注入:

    <bean  name="student" class="com.lsk.Student" >
            <!--值类型注入: 为stu对象中名为name的属性注入"孔乙己"作为值 -->
           <property name="name" value="孔乙己" ></property>
           <property name="age"  value="22" ></property>
           <property name="grade"  value="大三" ></property>
           <property name="rang"  value="1" ></property>
           <!-- 引用类型注入: 为course属性注入下方配置的course对象 -->
           <property name="course"  ref="course" ></property>
       </bean>

       <!-- 将course对象配置到容器中 -->
       <bean name="course" class="com.lsk.Course" >
           <property name="name" value="Java开发" ></property>
           <property name="page" value="112" ></property>
       </bean>

    (2)、构造函数注入:

    <bean name="stu1" class="com.spring.bean.Student" >
       <!-- name属性: 构造函数的参数名 -->
       <!-- index属性: 构造函数的参数索引 -->
       <!-- type属性: 构造函数的参数类型-->
       <constructor-arg name="name" index="0" type="java.lang.Integer" value="compasser"  ></constructor-arg>
       <constructor-arg name="course" ref="course" index="1" ></constructor-arg>
    </bean>
  • 相关阅读:
    设计模式(十五)---桥梁模式
    设计模式(十四)---门面模式
    设计模式(十三)---享元模式
    设计模式(十二)---代理模式
    设计模式(十一)---装饰者模式
    设计模式(十)---合成模式
    设计模式(九)---缺省适配器模式
    设计模式(八)---适配器模式
    设计模式(七)---原始模型模式
    一张图看懂JavaScript中数组的迭代方法:forEach、map、filter、reduce、every、some
  • 原文地址:https://www.cnblogs.com/ericli-ericli/p/8459032.html
Copyright © 2011-2022 走看看