본문 바로가기
🌈 백엔드/스프링 프레임워크

스프링_외부파일 XML의 <property>

by 개발자 알마 2023. 9. 1.
반응형

 

[1] 외부파일 연결 


 

(1) 외부파일을 연결하는 목적 

변경에 유리한 코드를 만들기 위해 외부파일을 이용한다. 

스프링 컨테이너인 Map 과 외부 파일(Properties, XML , Java)을 이용한다 

 

프로그램의 코드를 변경하지 않고 properties 파일을 변경해서 사용한다 

 

 

 

[2]  xml 외부파일 연결 


(1) key , value 형식의 xml 외부파일 연결 

 

JAVA 코드를 변경하지 않고 외부 파일에 저장된 (key, value) 값을 읽어 실행하고

추후 유지보수같은 변경이 필요할 경우 외부파일의 (key, value)값을 변경하여 유지보수한다 

 

외부파일 config.xml 를 생성한다.  

 

 

외부파일xml 의 value로 해당된 값이 출력된다. 

 

 

 

[3]  객체 반복 생성


 

(1) 객체 생성 반복 

매번 객체 생성 scope= prototype 

매번 객체 생성 scope= prototype 

 

 

 

[4]  <property >


(1) <property> 기능 

인스턴스 변수인 bean의 속성을 초기화 할수 있다  

설정파일로 setter를 이용하여 적용하도록 되어있다 

setter로 굳이 호출하지 않아도 만으로 사용할수 있다 

class Car {
	String color;
    int oil;
    Engine engine;
    Door[] doors;
}

Car car = new Car();

//초기화를 아래처럼 안해도된다 . bean을 초기화하였기 때문에 
car.setColor("red")
car.setOil(100);
car.setEngine(engine);
car.setDoors(new Door[] { new Door(), new Door()}
<bean id="car" class="con.fastcampus.ch3.car">
	<propperty name="color vlaue="red"/>
    <propperty name="oil vlaue="100"/>
    <propperty name="engine vlaue="engine"/>
    <propperty name="doors vlaue="red"/>
		<array value-type="com.fastcampus.ch3.Door">
        	<ref bean="door"/>
            <ref bean="door"/>
        </array>
    </propperty>
</bean> 
<bean id="engine" class="con.fastcampus.ch3.Engine">
<bean id="door" class="con.fastcampus.ch3.Door" scope="prototype"/>

 

(2) <property-arg> 기능 

 

생성자를 이용해서 bean의 속성을 초기화 할수 있다 

 

class Car {
	String color;
    int oil;
    Engine engine;
    Door[] doors;
}

public Car(String color, int oil, Engine engine, Door[] doors) {
	this.color = color;
    this.oil = oil;
    this.engine = engine;
    this.doors =doors;
}
<bean id="car" class="con.fastcampus.ch3.car">
	<propperty-arg name="color vlaue="red"/>
    <propperty-arg name="oil vlaue="100"/>
    <propperty-arg name="engine vlaue="engine"/>
    <propperty-arg name="doors vlaue="red"/>
		<array value-type="com.fastcampus.ch3.Door">
        	<ref bean="door"/>
            <ref bean="door"/>
        </array>
    </propperty-arg>
</bean> 
<bean id="engine" class="con.fastcampus.ch3.Engine">
<bean id="door" class="con.fastcampus.ch3.Door" scope="prototype"/>

 

(3) <property> <list> 사용법 

<property name ="colors">
	<list>
    	<value>red</value> // String 기본형일때 
        <value>green</value>
        <value>blue</value>
        <value>white</value>
        <ref bean ="superEngine"/> // 참조형일때 
        <ref bean ="turboEngine"/>
    </list>    
</property>

 

(4) <property> <list> 사용법 

<property name ="engine">
	<set>
        <ref bean ="superEngine"/> 
        <ref bean ="turboEngine"/>
    </set>    
</property>

 

(5) <property> <list> 사용법 

<property name ="doors">
	<map>
        <entry key ="left" vlaue-ref="door"/> 
        <entry key ="right" vlaue-ref="door"/> 
    </map>    
</property>
반응형

댓글