프로그래머의 삶 Programmer's Life/PersistanceSolution

enum 타입으로 싱글톤 패턴(ibatis)

Oliver's World 2009. 12. 11. 17:31
728x90

아직 널리 적용되지 않았지만 싱글톤을 구현하는 가장 좋은 방법이라고 하는
enum 타입으로 생성하는 방법을 ibatis instance 를 가져오는 곳에 적용해 보았다....
enum 타입으로 생성할 경우 상당히 간결해지며 복잡한 직렬화나 리플렉션 상황에서도 직렬화가 자동으로 지원되고, 인스턴스가 여러개 생기지 않도록 확실하게 보장해 준다고 한다.

/**
 * @author lvsin - 13thAngel
 *
 */
public enum EnumSqlMapConfig {
 INSTANCE;

 private static SqlMapClient sqlMapper = null;
 private static Log log = LogFactory.getLog(SqlMapConfig.class);

 private SqlMapClient SqlMapConfig() {
  try {
   Reader reader = Resources
     .getResourceAsReader("SqlMapConfig.xml");
   sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader);
   reader.close();
  } catch (Exception e) {
   e.printStackTrace();
   log.error(e);
  }
  return sqlMapper;
 }

 private SqlMapClient instance() {
  try {
   if (sqlMapper == null) {
    synchronized (EnumSqlMapConfig.class) {
     if (sqlMapper == null)
      sqlMapper = SqlMapConfig();
    }
   }
  } catch (Exception e) {
   e.printStackTrace();
   log.error(e);
  }
  return sqlMapper;
 }

 public SqlMapClient getSqlMapInstance() {
  return instance();
 }

}

좀 더 해봐야될것 같다. enum 으로

728x90