Spring 에서 xml 로 bean 을 설정 하 는 디 테 일 을 자세히 설명 합 니 다.

9968 단어 springxmlbean
방금 배 운 spring 의 xml 설정 bean 에 대한 지식 을 정리 합 니 다.
응용 프로그램 Context.xml 파일 에서 bean 노드 를 사용 하여 bean 을 설정 합 니 다.bean 의 속성 id 는 IOC 용기 에서 유일 해 야 합 니 다.

<bean id="helloWorld" class="com.test.spring.beans.HelloWorld">
    <property name="name" value="Spring"></property>
</bean>
의존 주입 은 세 가지 방식 이 있다.
  • 속성 주입
  • 구조 방법 주입
  • 공장 방법 주입(적 게 사용 하고 추천 하지 않 으 며 본 고 는 더 이상 소개 하지 않 는 다)
  • 속성 주입
    setter 방법 을 통 해 Bean 의 속성 값 이나 의존 하 는 대상 을 주입 합 니 다.속성 주입 은요 소 를 사용 하고 name 속성 을 사용 하여 Bean 의 속성 이름,value 속성 또는하위 노드 의 속성 값 을 지정 합 니 다.속성 주입 은 실제 응용 에서 가장 자주 사용 하 는 주입 방식 이다.HelloWorld 클래스 의 setName()방법 은 위 코드 의 name 속성 에 대응 합 니 다.예 를 들 어 setName()방법 이름 을 setName 2()로 바 꾸 고 property 의 name 속성 값 을 name 으로 바 꿀 때 오류 가 발생 합 니 다.name 속성 을 name 2 로 바 꿔 야 합 니 다.
    구조 방법
    구조 방법 은 Bean 의 속성 치 나 의존 하 는 대상 을 주입 하여 Bean 인 스 턴 스 를 예화 한 후에 사용 할 수 있 도록 보장 합 니 다.
    구조 기 는요소 에 속성 을 설명 하고에는 name 속성 이 없습니다.value 속성 값 이나 value 하위 노드 를 속성 할당 으로 사용 합 니 다.색인 index 와 type 속성 을 동시에 사용 하여 어떤 속성 할당 에 대응 할 수 있 습 니까?index 의 값 은 구조 함수 에서 매개 변수의 위 치 를 나타 낸다.type 은 멤버 속성 을 나타 내 는 유형 입 니 다.예 를 들 어 type="double"또는 type="Java.lang.String"
    
    <bean id="car" class="com.test.spring.beans.Car">
        <constructor-arg value="Audi" index="0"></constructor-arg>
        <constructor-arg value="ShangHai" index="1"></constructor-arg>
        <constructor-arg value="300000" type="double"></constructor-arg>
    </bean>
    주 입 된 값 에'<>'와 같은 특수 문자 가 있 으 면싸 고 싸 지 않 으 면 xml 가 잘못 보 고 됩 니 다.예:
    
        <constructor-arg type="java.lang.String">
          <value><![CDATA[<shanghai^>]]></value>
        </constructor-arg>
    콘 솔 인쇄 값 은입 니 다.
    bean 에 속성 을 주입 할 때 다른 bean 이 포함 되 어 있 으 면 요소 나 ref 속성 을 Bean 의 속성 이나 구조 기 매개 변 수 를 통 해 Bean 에 대한 인용 을 지정 할 수 있 습 니 다.
    속성 이나 구조 기 에 Bean 의 성명 을 포함 할 수도 있 습 니 다.이러한 Bean 을 내부 Bean 이 라 고 부 릅 니 다.Bean 인 스 턴 스 가 특정한 속성 만 사용 할 때 내부 Bean 이 라 고 설명 할 수 있 습 니 다.내부 Bean 성명 은또는요소 에 직접 포함 되 어 있 습 니 다.어떠한 id 나 name 속성 도 설정 할 필요 가 없습니다.내부 빈 은 다른 곳 에 서 는 사용 할 수 없습니다.
    
    </bean>
       <!--                          ,          
              <constructor-arg>        
       -->
       <bean id="car2" class="com.test.spring.beans.Car">
        <constructor-arg value="Baoma" type="java.lang.String"></constructor-arg>
        <!--            ,    <![CDATE[]]>     -->
        <!--           value    -->
        <constructor-arg type="java.lang.String">
          <value><![CDATA[<shanghai^>]]></value>
        </constructor-arg>
        <constructor-arg type="int">
          <value>250</value>
        </constructor-arg>
       </bean>
    
       <bean id="persion" class="com.test.spring.beans.Persion">
        <property name="name" value="Tom"></property>
        <property name="age" value="24"></property>
        <!--     property ref    bean        -->
        <!-- 
        <property name="car" ref="car2"></property>
         -->
        <!-- 
        <property name="car" ref="car2">
          <ref bean="car2"/>
        </property>
         -->
        <!--   bean,       ,        -->
        <property name="car">
          <bean class="com.test.spring.beans.Car">
            <constructor-arg value="Ford"></constructor-arg>
            <constructor-arg value="Changan"></constructor-arg>
            <constructor-arg value="200000" type="double"></constructor-arg>
          </bean>
        </property>
         <property name="car.maxSpeed" value="400"></property>
     </bean>
    
    
    전용요소 라벨 을 Bean 의 문자열 이나 다른 대상 형식의 속성 으로 null 값 을 주입 할 수 있 습 니 다.
    Struts,Hiberante 등 프레임 워 크 와 마찬가지 로 Spring 은 직렬 속성 설정 을 지원 합 니 다.속성 은 초기 화 되 어야 합 니 다.예 를 들 어 코드 에 car 대상 을 설정 해 야 하 는 bean
    
    <bean id="persion2" class="com.test.spring.beans.Persion">
        <constructor-arg value="Jerry"></constructor-arg>
        <constructor-arg value="25"></constructor-arg>
        <!--
         <constructor-arg ref="car"></constructor-arg>
         -->
        <!--     null -->
        <!-- 
        <constructor-arg><null/></constructor-arg>
        -->
        <constructor-arg ref="car"></constructor-arg>
        <!--         ,                     ,      , struts2  。-->
        <property name="car.maxSpeed" value="300"></property>
     </bean>
    
    
    집합 속성
    주 입 된 속성 이 집합 일 때 Spring 도 내 장 된 xml 태그(예:,또는)를 통 해 집합 속성 을 설정 합 니 다.
    java.util.List 형식의 속성 을 설정 하려 면탭 을 지정 해 야 합 니 다.탭 에 요 소 를 포함 합 니 다.이 탭 들 은를 통 해 간단 한 상수 값 을 지정 하고 다른 Bean 에 대한 인용 을 지정 할 수 있 습 니 다.을 통 해 내장 Bean 정 의 를 지정 합 니 다.빈 요 소 를 지정 하여 다른 집합 을 내장 할 수도 있 습 니 다.
    배열 의 정 의 는 List 와 마찬가지 로를 사용 하여 자바 util.set 를 설정 하려 면탭 을 사용 해 야 합 니 다.요 소 를 정의 하 는 방법 은 List 와 같 습 니 다.
    
       <!--            -->
       <bean id="persion3" class="com.test.spring.beans.collection.Persion">
        <property name="name" value="Mike"></property>
        <property name="age" value="27"></property>
        <property name="cars">
        <!--   list   list        -->
          <list>
            <ref bean="car"/>
            <ref bean="car2"/>
          </list>   
        </property>
       </bean>
    
    
    자바 util.Map 은탭 을 통 해 정의 합 니 다.탭 에 여러 개의를 하위 탭 으로 사용 할 수 있 습 니 다.항목 마다 키 와 값 이 포함 되 어 있 습 니 다.키 와 값 의 유형 에 제한 이 없 기 때문에,,또는요 소 를 자 유 롭 게 지정 할 수 있 습 니 다.
    Map 의 키 와 값 을의 속성 으로 정의 할 수 있 습 니 다.간단 한 상수 로 key 와 value 를 사용 하여 정의 할 수 있 습 니 다.Bean 은 key-ref 와 value-ref 속성 정 의 를 참조 합 니 다.
    를 사용 하여 java.util.Properties 를 정의 합 니 다.이 탭 은 여러 개의을 하위 탭 으로 사용 합 니 다.각각탭 은 key 속성 을 정의 해 야 합 니 다.
    
    <!--   Map     -->
       <bean id="newPersion" class="com.test.spring.beans.collection.NewPersion">
        <property name="name" value="Rose"></property>
        <property name="age" value="28"></property>
        <property name="cars">
        <!--    map     map   entry     Map        -->
          <map>
            <entry key="AA" value-ref="car"></entry>
            <entry key="BB" value-ref="car2"></entry>
          </map>
        </property>
       </bean>
    
       <!--   Properties    -->
       <bean id="dataSource" class="com.test.spring.beans.collection.DataSource">
        <property name="properties">
        <!--    props   prop      Properties   -->
          <props>
            <prop key="user">root</prop>
            <prop key="password">123456</prop>
            <prop key="jdbcUrl">jdbc:mysql:///test</prop>
            <prop key="driverClass">com.mysql.jdbc.Driver</prop>
          </props>
        </property>
       </bean>
    
    
    기본 집합 탭 을 사용 하여 집합 을 정의 할 때 집합 을 독립 된 Bean 으로 정의 할 수 없 기 때문에 다른 Bean 은 이 집합 을 인용 할 수 없 기 때문에 서로 다른 Bean 간 에 집합 을 공유 할 수 없습니다.
    util schema 의 집합 탭 을 사용 하여 독립 된 집합 Bean 을 정의 할 수 있 습 니 다.주의해 야 할 것 은루트 요소 에 util schema 정 의 를 추가 해 야 합 니 다.
    
       <!--        Bean,    bean     ,    util    -->
       <util:list id="cars">
        <ref bean="car"/>
        <ref bean="car2"/>
       </util:list>
    
       <bean id="persion4" class="com.test.spring.beans.collection.Persion">
        <property name="name" value="Jack"></property>
        <property name="age" value="29"></property>
        <property name="cars" ref="cars"></property>
       </bean>
    
    p 네 임 스페이스 사용 하기
    XML 파일 의 설정 을 간소화 하기 위해 하위 요소 설정 정보 가 아 닌 속성 을 사용 하 는 XML 파일 이 점점 많아 지고 있 습 니 다.
    Spring 은 2.5 버 전부터 새로운 p 네 임 스페이스 를 도입 하여요소 속성 을 통 해 Bean 의 속성 을 설정 할 수 있 습 니 다.p 네 임 스페이스 를 사용 하면 XML 기반 설정 방식 이 더욱 간소 화 됩 니 다.
    
    <!--    p      bean    ,      p     ,               -->
       <bean id="persion5" class="com.test.spring.beans.collection.Persion" p:name="Queen" p:age="30" p:cars-ref="cars">
       </bean>
    
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기