728x90

spring.di 패키지 우클릭 → New → Other...

 

Spring폴더 Spring Bean Configuration File → Next >

 

File name 작성 후 Finish


1. property

Setter메소드를 통해 값을 설정

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
	
   	<!-- Exam exam = new NewlecExam(); -->
	<bean id="exam" class="spring.di.entity.NewlecExam" />
		<!-- NewlecExam에 get, set 필요 -->
		<property name="kor" value="10" />
		<property name="eng" value="10" />
		<property name="math" value="10" />
		<!-- 이렇게도 사용 가능 -->
		<property name="com">
			<value>10</value>
		</property>
    
    
   	<!-- ExamConsole console = new InlineExamConsole();  -->
	<bean id="console" class="spring.di.ui.InlineExamConsole" >
		
		<!-- console.setExam(exam); -->
		<property name="exam" ref="exam"/>
	</bean>
	
</beans>
  • <bean>태그 : 생성할 객체 지시

    id : 어떠한 이름으로 사용할 것인지(변수명) 입력

    class : 객체화 할 클래스
    (※중복을 방지하기 위해 패키지명까지 같이 입력)

  • <property>태그 : 함수 호출 (set 생략)

    name : 호출할 함수의 이름
    (※setExam 을 property명으로 대신하여 set을 생략하고 exam으로 바뀜)

    ref : name에 들어올 객체의 이름 (타입이 reference형식일 경우 사용)
    (exam의 속성은 spring.di.entity.NewlecExam 즉 reference형식)

    value : name에 들어올 객체의 이름 (타입이 value형식일 경우 사용)
    ( ex) 10, 15, 20.. 숫자)
package spring.di;

//import spring.di.entity.Exam;
//import spring.di.entity.NewlecExam;
//import spring.di.ui.ExamConsole;
//import spring.di.ui.GridExamConsole;
//import spring.di.ui.InlineExamConsole;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import spring.di.ui.ExamConsole;


public class Program {

	public static void main(String[] args) {
		
       		 /* 스프링에게 지시하는 방법으로 코드 변경
		Exam exam = new NewlecExam();
		ExamConsole console = new InlineExamConsole(exam);
		ExamConsole console = new GridExamConsole(exam);
    		*/
        
		//Maven 라이브러리 가져온 후 import
		ApplicationContext context = new ClassPathXmlApplicationContext("spring/di/setting.xml");
		
//		ExamConsole console = (ExamConsole) context.getBean("console");
		ExamConsole console = context.getBean(ExamConsole.class);
		console.print();
	}

}
  • [ ExamConsole console = (ExamConsole) context.getBean("console"); ] 의 형식으로 사용할 경우
    (이름으로 꺼낼 경우) object형으로 꺼내지기 때문에 캐스팅(형식 변환)을 해주어야 한다 - 번거롭다

  • [ ExamConsole console = context.getBean(ExamConsole.class); ] 의 형식으로 사용할 경우
    (자료형명으로 꺼낼 경우) 캐스팅을 해줄 필요가 없다. - 주로 선호된다

[실행결과]

total is 40, avg is 10.000000

 

 

 

2. constructor-arg

Constructor(생성자)를 통해 값을 설정

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
	<bean id="exam" class="spring.di.entity.NewlecExam">
		<!-- NewlecExam에 consturctor 추가 -->
		<!-- <constructor-arg index="0" value = "10" /> -->
		<!-- <constructor-arg index="1" value = "20" /> -->
		<!-- <constructor-arg index="2" value = "30" /> -->
		<!-- <constructor-arg index="3" value = "40" /> -->
		<constructor-arg name="kor" value = "10" />
		<constructor-arg name="eng" value = "20" />
		<constructor-arg name="math" value = "30" />
		<constructor-arg name="com" value = "40" />
	</bean>
	<bean id="console" class="spring.di.ui.InlineExamConsole" >
		<property name="exam" ref="exam"/>
	</bean>
	
</beans>

<constructor-arg>태그에 index를 사용할 경우 값을 헷갈릴 수 있기 때문에 name을 통해 명시적으로 표현한다

 

+

 

자료형이 다를 경우 type속성을 추가로 설정해 줄 수 있다.

 

ex)

<constructor-arg name="kor" type = "float" value = "10" />
<constructor-arg name="eng" type = "float" value = "20" />
<constructor-arg name="math" type = "float" value = "30" />
<constructor-arg name="com" type = "float" value = "40" />

 

☆☆☆☆ constructor 간편하게 생성하는 법 ☆☆☆☆

constructor를 생성하고자하는 위치 우클릭 → Source → Generate Constructor using Fields...

 

Select All 해준 후 Generate

 

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

 

3. 속성 설정

constructor를 사용할 때 태그가 너무 번잡하여 쉽게 사용하기 위해 사용

 

단일태그에 접두사p:속성명 을 입력하여 설정가능

 

설정이 필요한 xml파일 하단 Namespaces 클릭 → p에 체크

※Namespaces : 이름을 식별하기위해 붙여지는 접두사

 

OK

 

 

다시 Source로가서 추가된 열 확인

 

<?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:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
	<bean id="exam" class="spring.di.entity.NewlecExam" p:kor="10" p:eng="20" p:math="30" p:com="40"/>
	<!-- <bean id="exam" class="spring.di.entity.NewlecExam">
		<constructor-arg name="kor" value = "10" />
		<constructor-arg name="eng" value = "20" />
		<constructor-arg name="math" value = "30" />
		<constructor-arg name="com" value = "40" />
	</bean> -->
	<bean id="console" class="spring.di.ui.InlineExamConsole" >
		<property name="exam" ref="exam"/>
	</bean>
	
</beans>

'spring' 카테고리의 다른 글

어노테이션 (Annotation)  (0) 2021.09.08
Collection 생성  (0) 2021.08.30
Maven Repository 라이브러리 가져오기  (0) 2021.08.29
ApplicationContext의 종류  (0) 2021.08.29
스프링 플러그인 설치하기, 파일추가하기  (0) 2021.08.26

+ Recent posts