728x90
반응형

Spring 은 bean객체를 싱글턴으로 인스턴스화 시켰을경우 다중스레드에 대한 처리를 자동적으로 지원해준다. 

우리는 직접 구현한 싱글턴 객체에 대해 bean 에 설정하는방법에 대해서도 알아야한다 . 

 


test01.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 name="single" class="test.single.SingletonDao"

factory-method="getInstance" />

</beans>


SingletonDao.java

package test.single;

// 싱글톤패턴의 DAO

public class SingletonDao {

private static SingletonDao instance = new SingletonDao();

private SingletonDao(){}

public static SingletonDao getInstance() {

return instance;

}

public void insert( String data ) {

System.out.println(data+"를 추가 했습니다.");

}

public void delete( String data ) {

System.out.println(data+"를 삭제 했습니다.");

}

public void select( String data ) {

System.out.println(data+"를 조회 했습니다.");

}

public void update( String data ) {

System.out.println(data+"를 수정 했습니다.");

}

}



TestMain.java

package test.main;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import test.single.SingletonDao;

public class TestMain {

public static void main(String[] args) {

String res = "test/main/test01.xml";

ApplicationContext context = 

new ClassPathXmlApplicationContext(res);

// 싱글톤 객체의 인스턴스 생성

SingletonDao dao = 

(SingletonDao)context.getBean("single");

dao.insert("이상훈");

}


}


출력결과

싱글턴 패턴 으로 구현된 클래스는 생성자를 가져올수 없다(private) 이기 떄문에 

그래서 인스턴스를 구현한 getter 메서드를 factory-method 라는 속성으로 getter 메소드를 가져올 수 있다.


728x90
반응형

+ Recent posts