아직 널리 적용되지 않았지만 싱글톤을 구현하는 가장 좋은 방법이라고 하는
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 으로