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 메소드를 가져올 수 있다.
'JAVA > Spring' 카테고리의 다른 글
[Project Reactor] Schedulers 정리 (0) | 2019.12.11 |
---|---|
Spring WebFlux와 Kotlin으로 만드는 Todo 서비스 – 2편 (0) | 2019.09.05 |
Spring WebFlux와 Kotlin으로 만드는 Todo 서비스 - 1편 (1) | 2019.08.27 |
Spring DI 예제 2 - LifeCycle (0) | 2013.11.02 |
Spring DI 예제 1 - 인터페이스 객체 주입 (0) | 2013.11.02 |