쓸만한 JSP 홈페이지 만들기

공통클래스 - ObjectUtils

엉으니 2019. 6. 21. 20:14

오브젝트에 대한 공통클래스이다.

이 클래스의 목적은 추후 스프링 시큐리티 적용하면 was기동할때부터 실행되는 쿼리가 있는데,

이 쿼리들은 모두 이 클래스를 거쳐가게 된다.

 

또한 객체가 null인지 아닌지 확인하는 함수도 있는데,

이 함수는 서비스쪽 클래스 작성시 nullpointexception을 예방할 목적에서 쓸 수 있겠다.

public class ObjectUtils {

    private static final Logger logger = LoggerFactory.getLogger(ObjectUtils.class);

    private ObjectUtils() {

    }

    /**
     * 클래스명으로 객체를 로딩한다.
     * @param className
     * @return
     * @throws ClassNotFoundException
     * @throws Exception
     */
    public static Class<?> loadClass(String className)
            throws ClassNotFoundException, Exception {

        Class<?> clazz = null;
        try {
            clazz =
                Thread.currentThread().getContextClassLoader().loadClass(
                    className);
        } catch (ClassNotFoundException e) {
            throw new ClassNotFoundException();
        } catch (Exception e) {
            throw new Exception(e);
        }

        if (clazz == null) {
            clazz = Class.forName(className);
        }

        return clazz;

    }

    /**
     * 클래스명으로 객체를 로드한 후 인스턴스화 한다.
     * @param className
     * @return
     * @throws ClassNotFoundException
     * @throws InstantiationException
     * @throws IllegalAccessException
     * @throws Exception
     */
    public static Object instantiate(String className)
            throws ClassNotFoundException, InstantiationException,
            IllegalAccessException, Exception {
        Class<?> clazz;

        try {
            clazz = loadClass(className);
            return clazz.newInstance();
        } catch (ClassNotFoundException e) {
            if (logger.isErrorEnabled())
                logger.error(className + " : Class is can not instantialized.");
            throw new ClassNotFoundException();
        } catch (InstantiationException e) {
            if (logger.isErrorEnabled())
                logger.error(className + " : Class is can not instantialized.");
            throw new InstantiationException();
        } catch (IllegalAccessException e) {
            if (logger.isErrorEnabled())
                logger.error(className + " : Class is not accessed.");
            throw new IllegalAccessException();
        } catch (Exception e) {
            if (logger.isErrorEnabled())
                logger.error(className + " : Class is not accessed.");
            throw new Exception(e);
        }
    }

    /**
     * 클래스명으로 파라매터가 있는 클래스의 생성자를 인스턴스화 한다. 예) Class <?>
     * clazz = EgovObjectUtil.loadClass(this.mapClass);
     * Constructor <?> constructor =
     * clazz.getConstructor(new Class
     * []{DataSource.class, String.class}); Object []
     * params = new Object []{getDataSource(),
     * getUsersByUsernameQuery()};
     * this.usersByUsernameMapping =
     * (EgovUsersByUsernameMapping)
     * constructor.newInstance(params);
     * @param className
     * @return
     * @throws ClassNotFoundException
     * @throws InstantiationException
     * @throws IllegalAccessException
     * @throws Exception
     */
    public static Object instantiate(String className, String[] types,
            Object[] values) throws ClassNotFoundException,
            InstantiationException, IllegalAccessException, Exception {
        Class<?> clazz;
        Class<?>[] classParams = new Class[values.length];
        Object[] objectParams = new Object[values.length];

        try {
            clazz = loadClass(className);

            for (int i = 0; i < values.length; i++) {
                classParams[i] = loadClass(types[i]);
                objectParams[i] = values[i];
            }

            Constructor<?> constructor = clazz.getConstructor(classParams);
            return constructor.newInstance(values);

        } catch (ClassNotFoundException e) {
            if (logger.isErrorEnabled())
                logger.error(className + " : Class is can not instantialized.");
            throw new ClassNotFoundException();
        } catch (InstantiationException e) {
            if (logger.isErrorEnabled())
                logger.error(className + " : Class is can not instantialized.");
            throw new InstantiationException();
        } catch (IllegalAccessException e) {
            if (logger.isErrorEnabled())
                logger.error(className + " : Class is not accessed.");
            throw new IllegalAccessException();
        } catch (Exception e) {
            if (logger.isErrorEnabled())
                logger.error(className + " : Class is not accessed.");
            throw new Exception(e);
        }
    }

    /**
     * 객체가 Null 인지 확인한다.
     * @param object
     * @return Null인경우 true / Null이 아닌경우 false
     */
    public static boolean isNull(Object object) {
        return ((object == null) || object.equals(null));
    }
}
반응형

'쓸만한 JSP 홈페이지 만들기' 카테고리의 다른 글

ehcache연동 ehcache.xml  (0) 2019.07.01
Spring 설정xml - ehcache-context.xml  (0) 2019.06.24
공통클래스 - MariaUsTypeHandler  (0) 2019.06.21
mybatis연동 config.xml  (1) 2019.06.21
file-query.xml  (0) 2019.06.21