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 |