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>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章