日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring-Spring配置概述

發布時間:2025/3/21 javascript 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring-Spring配置概述 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  • Spring容器高層視圖
    • 成功啟動Spring容器的三個必要條件
    • Bean配置信息
  • 基于XML的配置
    • Schema的配置格式
  • Bean的基本配置
    • 裝載一個Bean
    • Bean的命名
      • 總結
  • 導讀

Spring容器高層視圖

成功啟動Spring容器的三個必要條件:

  • Spring框架的類包均已放在應用程序的類路徑下
  • 應用程序為Spring提供了完整的Bean配置信息
  • Bean的類都已經放到應用程序的類路徑下

  • Spring啟動時,讀取應用程序提供的Bean配置信息,并在Spring容器中提供一份相應的Bean配置注冊表,然后根據這張注冊表實例化Bean,裝配好Bean之間的依賴關系,為上層應用提供準備就緒的運行環境。

    Bean配置信息

    Bean配置信息是Bean的元數據信息,由以下4個方面組成

    • Bean的實現類
    • Bean的屬性信息 ,如數據源的連接數、用戶名密碼等
    • Bean的依賴關系,Spring根據依賴關系配置Bean之間的裝配
    • Bean的行為配置,如生命周期范圍和生命周期各個過程的回調函數等。

    Spring元數據信息在Spring容器中的內部對應由一個個BeanDefinition行程的Bean注冊表。

    Spring支持多種形式的Bean配置方式。

    • Spring 1.0僅支持基于XML的配置方式
    • Spring 2.0新增基于注解的配置方式
    • Spring 3.0新增基于Java類配置的支持
    • Spring 4.0新增基于Groovy動態語言配置的支持

    Bean配置信息
    首先定義了Bean的實現及依賴關系,Spring容器根據Bean的配置信息在容器內部建立Bean定義注冊表,
    然后根據注冊表加載、實例化Bean,并建立Bean之間的依賴關系,
    最后將這些準備就緒的Bean放到Bean緩存池中,供外層的應用調用。


    基于XML的配置

    基于XML的配置,spring1.0的配置文件采用DTD格式,Spring2.0以后則采用Schema形式,基于Schema形式,讓不同類型的配置擁有了自己的命名空間,更具擴展性。此外,Spring基于Schema配置方案為許多領域的問題提供了簡化的配置方法,配置工作因此得到了大幅簡化。

    Schema的配置格式

    解析:

    • ① 默認命名空間:它沒有空間名,用于Spring Bean的定義;
    • ② xsi命名空間:這個命名空間用于為每個文檔中命名空間指定相應的Schema樣式文件,是標準組織定義的標準命名空間;
    • ③ aop命名空間:這個命名空間是Spring配置AOP的命名空間,是用戶自定義的命名空間。

    命名空間的定義分為兩個步驟:
    第一步指定命名空間的名稱,
    第二步指定命名空間的Schema文檔樣式文件的位置,用空格或回車換行進行分隔。

    命名空間使用全限定名,每個組織機構在發布Schema文件后,都會為該Schema文件提供一個引用的URL地址,一般使用這個URL地址指定命名空間對應的Schema文件。

    命名空間名稱和對應的Schema文件地址之間使用空格或回車分隔,不同的命名空間之間也使用這種分隔方法。

    指定命名空間的Schema文件地址有兩個用途:

    • XML解析器可以獲取Schema文件并對文檔進行格式合法性驗證;
    • 在開發環境下,IDE可以引用Schema文件對文檔編輯提供誘導功能(自動補全)。

    Spring4.0配置的Schema文件放在各模塊Jar文件內一個名為config的目錄下

    比如AOP:


    強烈建議使用新的基于Schema的配置方式

    除了Xml的配置方式,spring還支持基于注解、Java類、Groovy的配置方式,本質上是相同的,僅僅是形的區別。

    基于Xml的配置方式是最基礎、最傳統的配置方式,下面我們注重探討基于Xml的配置,另外三種也作簡要介紹。


    Bean的基本配置

    裝載一個Bean

    在Spring容器的配置文件中定義一個簡要的Bean的配置片段如下

    <bean id="plane" class="com.xgj.Plane">
    • id:bean的名稱 ,通過容器的getBean(“plane”)即可獲得對應的Bean,在容器中起到定位查找的作用,是外部程序和SpringIoC容器進行交互的橋梁,
    • class:bean的類名,指定了Bean對應的實現類

    我們用STS創建一個Maven工程如下:舉例:

    logback.xml沒用,使用的log4j的配置那文件

    package com.xgj.ioc.beans;public class Boss {private String name;private String sex;private int age;private Plane plane ;....省略setter/getter public void introduce() {System.out.println("Boss Information【name:" + name + ",sex:" + sex + ",age:" + age +"】" );plane.info();}} package com.xgj.ioc.beans;public class Plane {private String brand;private String color;private int speed;....省略setter/getter public void info(){System.out.println("brand:" + brand + ",color:" + color + ",speed" + speed);}} package com.xgj.ioc.beans;import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;public class Test {public static void main(String[] args) {// 加載配置文件ApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:spring/application-config.xml");// 從容器中獲取實例化后的beanBoss boss = ctx.getBean("boss", Boss.class);Plane plane = ctx.getBean("plane", Plane.class);// 設置屬性boss.setName("XGJ");boss.setSex("MALE");boss.setAge(20);boss.setPlane(plane);// 設置屬性plane.setBrand("A380");plane.setColor("red");plane.setSpeed(900);// 調用方法boss.introduce();}}

    application-config.xml

    <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"><!-- Uncomment and add your base-package here:<context:component-scanbase-package="org.springframework.samples.service"/> --><bean id="plane" class="com.xgj.ioc.beans.Plane"/><bean id="boss" class="com.xgj.ioc.beans.Boss"/></beans>


    Bean的命名

    一般情況下,在配置一個Bean時,需要為其指定一個id屬性作為Bean的名稱。

    id在IoC容器中必須是唯一的,并且id的命名需要滿足XML對id的命名規范(id是xml規定的特殊屬性)

    • 必須以字母開始,后面可以是字符、數字、連接符、下劃線、局號、冒號等完整結束(full stops)的符號
    • 逗號和空格這些非完整結束符是非法的。

    在實際情況下,id命名約束并不會給用戶帶來影響,如果用戶確實希望用一些特殊字符進行bean命名,這可以使用<bean>的name屬性。 name屬性沒有字符上的限制,幾乎可以使用任何字符比如?ab、123

    id和name都可以指定多個名字,名字之間可以用逗號、分號或者空格進行分隔,比如

    <bean id="plane" name="#plane1,123,$plane" class="com.xgj.ioc.beans.Plane"/>

    用戶可以通過getBean(“#plane1”),getBean(“123”),getBean(“$plane”),獲取IoC容器中的plane Bean.

    Spring配置文件不允許出現兩個相同id的bean, 但可以出現兩個相同name的bean。

    如果有多個相同name的bean,通過getBean(BeanName)則獲取的是后面聲明的那個Bean。

    為了避免此問題,應盡量使用ID,而非Name來命名Bean。

    如果id和name均未指定,比如

    <bean class="com.xgj.ioc.beans.Plane"/>

    Spring會指定將全限定類名作為bean的名稱,用戶可以通過getBean(“com.xgj.ioc.beans.Plane”)獲取Bean

    如果存在多個實現類相同的匿名Bean,如下

    <bean class="com.xgj.ioc.beans.Plane"/><bean class="com.xgj.ioc.beans.Plane"/><bean class="com.xgj.ioc.beans.Plane"/>

    第一個Bean可以通過getBean(“com.xgj.ioc.beans.Plane”)獲得
    第二個Bean通過getBean(“com.xgj.ioc.beans.Plane#1”)獲得
    第三個Bean通過getBean(“com.xgj.ioc.beans.Plane#2”)獲得

    一般匿名bean在通過內部Bean為外層Bean提供注入值是使用,類似Java的匿名類。

    總結:

    上面各種命名方式,只是為了演示Sping配置的靈活性和包容性,實際應用中并不多見, 通過id為Bean指定唯一的名稱才是正解。


    導讀

    01-Spring-Spring配置概述

    02-Spring-依賴注入

    03-Spring-注入參數詳解

    總結

    以上是生活随笔為你收集整理的Spring-Spring配置概述的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。