티스토리 뷰

 기본적으로 context를 활용한 DI를 구성할 때, 접근하려는 객체의 기본 생성자가 존재하지 않는다면, 접근할 수가 없다. 

그러나 일반적으로 싱글톤 패턴은 객체의 기본 생성자 자체가 private이기 때문에 마찬가지로 객체 생성이 불가능하다. 

때문에 factory-method속성을 추가하여 getInstance메서드를 따로 호출해줘야 한다.


◎ExamTest

package test.exam02;

public class ExamTest {

	private static ExamTest instance;
	
	private ExamTest() {
		
	}
	
	public static ExamTest getInstance() {
		if(instance == null) {
			instance = new ExamTest();
		} 
		return instance;
	}
	
	public void printMessage() {
		System.out.println("호출: ");
	}

}

 

◎exam02.xml

<?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 = "test.exam02.ExamTest" factory-method = "getInstance">
	</bean>
	
</beans>

 

◎main

package test.exam02;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

import test.exam01.ExamDao;

public class ExamMain {

	public static void main(String[] args) {

				ApplicationContext context = new FileSystemXmlApplicationContext("src/test/exam02/exam02.xml");
				
				ExamTest test = (ExamTest)context.getBean("exam");
				
				System.out.println("Start");
				
				test.printMessage();
				
				System.out.println("end");

	}
}
Comments