1. Spring Bean Configuration File
<?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">
// DI 지시 부분
<bean id ="exam" class = "spring.di.entity.Exam">
<property name="kor" value="10" /> // Exam 클래스 kor 멤버변수에 값 초기화
<property name="eng" value="10" />
<property name="math" value="10" />
</bean>
<bean id ="console" class = "spring.di.ui.GridExamConsole">
<property name="exam" ref="exam"/> // name = exam 은 SetExam() setter 함수를 의미 (규칙: set 제거, 소문자)
</bean> // console 클래스에 SetExam() setter 메서드 존재해야함
</beans>
2. ref type
<bean id ="exam" class = "spring.di.entity.Exam"></bean>
<bean id ="console" class = "spring.di.ui.GridExamConsole">
<property name="exam" ref="exam"/>
</bean>
3. value type
<bean id ="exam" class = "spring.di.entity.Exam">
<property name="kor" value="10" />
<property name="eng" value="10" />
<property name="math" value="10" />
</bean>
4. ApplicationContext
① FileSystemXml - 파일 경로로 지정된 곳의 xml을 읽어 설정 정보를 로딩
② XmlWeb - 웹 어플리케이션에 위치한 곳에서 xml파일을 읽어 설정 정보를 로딩
③ AnnotationConfig - @Configuration 어노테이션이 붙은 클래스를 이용하여 설정 정보로 로딩
④ ClassPathXml - ClassPath에 위치한 xml 파일을 읽어 설정 정보를 로딩, root로부터 경로를 지정함
5. main 코드 부분
public class Program {
public static void main(String[] args) {
// ioc 컨테이너 생성 (Spring Bean Configuration File 에 지정된 대로 객체 생성)
ApplicationContext context = new ClassPathXmlApplicationContext("spring/di/settig.xml");
ExamConsole console = (ExameConsole) context.getBean("console")
// ExamConsole 자료형으로 참조 가능한 객체를 찾아서 반환함 (두 개 이상이면 구분 필요)
ExamConsole console = context.getBean(ExamConsole.class)
console.print();
}
}
1. Constructor-arg
//index 지정방법
<bean id ="exam" class = "spring.di.entity.Exam">
<constructor-arg index="1" value="1000"/>
<constructor-arg index="3" value="20"/>
<constructor-arg index="2" value="30"/>
</bean>
//name 지정방법
<bean id ="exam" class = "spring.di.entity.Exam">
<constructor-arg name="kor" value="10"/>
<constructor-arg name="eng" value="20"/>
<constructor-arg name="math" value="30"/>
</bean>
//name + type 지정방법 (오버로딩 구분)
<bean id ="exam" class = "spring.di.entity.Exam">
<constructor-arg name="kor" type="float" value="10"/>
<constructor-arg name="eng" type="float" value="20"/>
<constructor-arg name="math" type="float" value="30"/>
</bean>
2. p Namespace 사용하여 생성자 DI
<bean id ="exam" class = "spring.di.entity.Exam" p:kor="101" p:eng="10"/>
3. Namespace
// beans 라는 이름으로 기본 네임스페이스 (처리기) 지정
beans xmlns="http://www.springframework.org/schema/beans"
// 기본 네임스페이스 외 접두어가 있는 네임스페이스 지정 (beans 처리기에 의해 처리되지 않음)
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
// 기본 네임스페이스 외 접두어가 있는 네임스페이스 지정 (beans 처리기에 의해 처리되지 않음)
xmlns:p="http://www.springframework.org/schema/p"
<bean id ="exam" class = "spring.di.entity.Exam" p:kor="101" p:eng="10"/>
- 참고 사이트