diff --git a/src/main/java/cokr/xit/foundation/AbstractComponent.java b/src/main/java/cokr/xit/foundation/AbstractComponent.java
index 2d04fd9..46dc635 100644
--- a/src/main/java/cokr/xit/foundation/AbstractComponent.java
+++ b/src/main/java/cokr/xit/foundation/AbstractComponent.java
@@ -1,68 +1,18 @@
package cokr.xit.foundation;
-import java.util.Date;
import java.util.function.Supplier;
-import javax.annotation.Resource;
-
-import org.egovframe.rte.fdl.property.EgovPropertyService;
-import org.springframework.context.MessageSource;
-
import cokr.xit.foundation.data.Convert;
-/**업무 컴포넌트나 기능 구현 컴포넌트를 정의할 때 상속받는 클래스.
+/**기능 구현 컴포넌트를 정의할 때 상속받는 클래스.
*
AbstractComponent를 상속받는 클래스는
*
- {@link Assert}
- * - {@link #log() 로깅} 서비스
- * - {@link #currentAccess() 현재 접속 정보}
- * - {@link #currentUser() 현재 접속한 사용자 정보}
- * - {@link #properties 프로퍼티 서비스}
- * - {@link #message(String, String...) 메시지 처리}
+ * - {@link Convert}
*
* 등의 기능을 사용할 수 있다.
- * AbstractComponent의 상속 클래스는 '업무 용어 또는 기능 이름' + 'Bean'과 같이 이름을 명시한다.
- * 그리고 정의한 클래스를 애플리케이션 컨텍스트에 등록하려면, @Component 어노테이션을 적용하고 카멜 표기법으로 이름을 지정한다.
- * 다음은 그 예이다.
- *
package cokr.xit.example.business.service.bean;
- * {@code @Component("businessBean")}
- * public class BusinessBean extends AbstractComponent {
- * ...
- * }
- * 정의한 컴포넌트를 사용하려면 @Resource 어노테이션에 이름을 명시해 객체에 주입한다.
- *
@Resource(name = "businessBean")
- * BusinessBean businessBean;
+ * @author mjkhan
*/
public class AbstractComponent {
- /** 프로퍼티 서비스 */
- @Resource(name="propertyService")
- protected EgovPropertyService properties;
- /** 메시지 소스 */
- @Resource(name="messageSource")
- protected MessageSource messages;
- private String logName;
-
- /**로그이름을 설정한다.
- * @param logName 로그이름
- */
- public void setLogName(String logName) {
- this.logName = logName;
- }
-
- /**현재 접근한 사용자를 반환한다.
- * @param 사용자 정보 유형
- * @return 현재 접근한 사용자
- */
- protected T currentUser() {
- return UserInfo.current();
- }
-
- /**현재 사용자의 접근정보를 반환한다.
- * @return 현재 사용자의 접근정보
- */
- protected static Access currentAccess() {
- return Access.current();
- }
-
/**lv와 rv가 같은 지 반환한다.
* @param lv 좌측 값
* @param rv 우측 값
@@ -149,27 +99,6 @@ public class AbstractComponent {
return Convert.toBoolean(obj);
}
- /**메시지 리소스 파일에서 key로 정의된 문자열과 args로 메시지를 만들어 반환한다.
- * @param key 메시지 리소스 파일의 문자열 key
- * @param args 해당 문자열에 전달할 인자
- * @return 메시지
- */
- protected String message(String key, String... args) {
- return messages.getMessage(key, ifEmpty(args, () -> null), "", currentAccess().getLocale());
- }
-
- /**t가 공백이 아닌지 확인하고 t를 반환한다.
- * t가 공백이면, NullPointerException을 발생시키며, 메시지는 message-common 프로퍼티 파일의 'valueRequired'키에 설정된 값으로 만든다.
- * @param 객체 유형
- * @param t 값이나 객체
- * @param name assertion 실패 시 오류 메시지에 사용할 이름
- * @return t
- */
- protected final T required(T t, String name) {
- if (!isEmpty(t)) return t;
- throw new NullPointerException(message("valueRequired", name));
- }
-
/**{@link Assert#rootCause(Throwable)} 참고
*/
protected static final Throwable rootCause(Throwable t) {
@@ -200,16 +129,7 @@ public class AbstractComponent {
* @return Log
*/
protected Log log() {
- return isEmpty(logName) ? log(getClass()) : Log.get(logName);
- }
-
- /**주어진 Date에 지정한 날짜수만큼의 차이의 Date를 반환한다.
- * @param date 날짜
- * @param days 날짜수
- * @return 새 Date
- */
- protected static Date dateDiff(Date date, int days) {
- return new Date(date.getTime() + (1000L * 60L * 60L * 24L * days));
+ return log(getClass());
}
/**현재 객체를 반환한다.
diff --git a/src/main/java/cokr/xit/foundation/component/AbstractBean.java b/src/main/java/cokr/xit/foundation/component/AbstractBean.java
index 3052185..7244100 100644
--- a/src/main/java/cokr/xit/foundation/component/AbstractBean.java
+++ b/src/main/java/cokr/xit/foundation/component/AbstractBean.java
@@ -1,3 +1,103 @@
package cokr.xit.foundation.component;
-public abstract class AbstractBean extends ManagedComponent {}
\ No newline at end of file
+import java.util.Date;
+
+import javax.annotation.Resource;
+
+import org.egovframe.rte.fdl.property.EgovPropertyService;
+import org.springframework.context.MessageSource;
+
+import cokr.xit.foundation.AbstractComponent;
+import cokr.xit.foundation.Access;
+import cokr.xit.foundation.Log;
+import cokr.xit.foundation.UserInfo;
+import cokr.xit.foundation.util.DateFormats;
+
+/**spring framework가 관리하는 컴포넌트를 정의할 때 상속받는 클래스.
+ * AbstractBean를 상속받는 클래스는
+ *
- {@link #currentAccess() 현재 접속 정보}
+ * - {@link #currentUser() 현재 접속한 사용자 정보}
+ * - {@link #properties 프로퍼티 서비스}
+ * - {@link #message(String, String...) 메시지 처리}
+ *
+ * 등의 기능을 사용할 수 있다.
+ * AbstractBean의 상속 클래스는 '업무 용어 또는 기능 이름' + 'Bean'과 같이 이름을 명시한다.
+ * 그리고 정의한 클래스를 애플리케이션 컨텍스트에 등록하려면, @Component 어노테이션을 적용하고 카멜 표기법으로 이름을 지정한다.
+ * 다음은 그 예이다.
+ *
package cokr.xit.example.business.service.bean;
+ * {@code @Component("businessBean")}
+ * public class BusinessBean extends AbstractBean {
+ * ...
+ * }
+ * 정의한 컴포넌트를 사용하려면 @Resource 어노테이션에 이름을 명시해 객체에 주입한다.
+ *
@Resource(name = "businessBean")
+ * BusinessBean businessBean;
+ */
+public abstract class AbstractBean extends AbstractComponent {
+ /** 프로퍼티 서비스 */
+ @Resource(name="propertyService")
+ protected EgovPropertyService properties;
+ /** 메시지 소스 */
+ @Resource(name="messageSource")
+ protected MessageSource messages;
+ /** 날짜 포맷 모음 */
+ protected DateFormats dateFormats = new DateFormats();
+ private String logName;
+
+ /**로그이름을 설정한다.
+ * @param logName 로그이름
+ */
+ public void setLogName(String logName) {
+ this.logName = logName;
+ }
+
+ /**현재 접근한 사용자를 반환한다.
+ * @param 사용자 정보 유형
+ * @return 현재 접근한 사용자
+ */
+ protected T currentUser() {
+ return UserInfo.current();
+ }
+
+ /**현재 사용자의 접근정보를 반환한다.
+ * @return 현재 사용자의 접근정보
+ */
+ protected static Access currentAccess() {
+ return Access.current();
+ }
+
+ /**메시지 리소스 파일에서 key로 정의된 문자열과 args로 메시지를 만들어 반환한다.
+ * @param key 메시지 리소스 파일의 문자열 key
+ * @param args 해당 문자열에 전달할 인자
+ * @return 메시지
+ */
+ protected String message(String key, String... args) {
+ return messages.getMessage(key, ifEmpty(args, () -> null), "", currentAccess().getLocale());
+ }
+
+ /**t가 공백이 아닌지 확인하고 t를 반환한다.
+ * t가 공백이면, NullPointerException을 발생시키며, 메시지는 message-common 프로퍼티 파일의 'valueRequired'키에 설정된 값으로 만든다.
+ * @param 객체 유형
+ * @param t 값이나 객체
+ * @param name assertion 실패 시 오류 메시지에 사용할 이름
+ * @return t
+ */
+ protected final T required(T t, String name) {
+ if (!isEmpty(t)) return t;
+ throw new NullPointerException(message("valueRequired", name));
+ }
+
+ @Override
+ protected Log log() {
+ return isEmpty(logName) ? super.log() : Log.get(logName);
+ }
+
+ /**주어진 Date에 지정한 날짜수만큼의 차이의 Date를 반환한다.
+ * @param date 날짜
+ * @param days 날짜수
+ * @return 새 Date
+ */
+ protected static Date dateDiff(Date date, int days) {
+ return new Date(date.getTime() + (1000L * 60L * 60L * 24L * days));
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/cokr/xit/foundation/component/ManagedComponent.java b/src/main/java/cokr/xit/foundation/component/ManagedComponent.java
deleted file mode 100644
index 852955f..0000000
--- a/src/main/java/cokr/xit/foundation/component/ManagedComponent.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package cokr.xit.foundation.component;
-
-import javax.annotation.Resource;
-
-import org.egovframe.rte.fdl.property.EgovPropertyService;
-import org.springframework.context.MessageSource;
-
-import cokr.xit.foundation.AbstractComponent;
-import cokr.xit.foundation.Access;
-import cokr.xit.foundation.UserInfo;
-import cokr.xit.foundation.util.DateFormats;
-
-/**spring framework가 관리하는 컴포넌트를 정의할 때 상속받는 클래스.
- * ManagedComponent를 상속받는 클래스는
- *
- {@link #currentAccess() 현재 접속 정보}
- * - {@link #currentUser() 현재 접속한 사용자 정보}
- * - {@link #properties 프로퍼티 서비스}
- * - {@link #message(String, String...) 메시지 처리}
- *
- * 등의 기능을 사용할 수 있다.
- * ManagedComponent의 상속 클래스는 '업무 용어 또는 기능 이름' + 'Bean'과 같이 이름을 명시한다.
- * 그리고 정의한 클래스를 애플리케이션 컨텍스트에 등록하려면, @Component 어노테이션을 적용하고 카멜 표기법으로 이름을 지정한다.
- * 다음은 그 예이다.
- *
package cokr.xit.example.business.service.bean;
- * {@code @Component("businessBean")}
- * public class BusinessBean extends ManagedComponent {
- * ...
- * }
- * 정의한 컴포넌트를 사용하려면 @Resource 어노테이션에 이름을 명시해 객체에 주입한다.
- *
@Resource(name = "businessBean")
- * BusinessBean businessBean;
- */
-public class ManagedComponent extends AbstractComponent {
- /** 프로퍼티 서비스 */
- @Resource(name="propertyService")
- protected EgovPropertyService properties;
- /** 메시지 소스 */
- @Resource(name="messageSource")
- protected MessageSource messages;
- /** 날짜 포맷 모음 */
- protected DateFormats dateFormats = new DateFormats();
-
- /**현재 접근한 사용자를 반환한다.
- * @param 사용자 정보 유형
- * @return 현재 접근한 사용자
- */
- @Override
- protected T currentUser() {
- return UserInfo.current();
- }
-
- /**현재 사용자의 접근정보를 반환한다.
- * @return 현재 사용자의 접근정보
- */
- protected static Access currentAccess() {
- return Access.current();
- }
-
- /**메시지 리소스 파일에서 key로 정의된 문자열과 args로 메시지를 만들어 반환한다.
- * @param key 메시지 리소스 파일의 문자열 key
- * @param args 해당 문자열에 전달할 인자
- * @return 메시지
- */
- @Override
- protected String message(String key, String... args) {
- return messages.getMessage(key, ifEmpty(args, () -> null), "", currentAccess().getLocale());
- }
-}
\ No newline at end of file
diff --git a/src/main/java/cokr/xit/foundation/data/paging/MybatisPlugin.java b/src/main/java/cokr/xit/foundation/data/paging/MybatisPlugin.java
index 010744f..30f45fc 100644
--- a/src/main/java/cokr/xit/foundation/data/paging/MybatisPlugin.java
+++ b/src/main/java/cokr/xit/foundation/data/paging/MybatisPlugin.java
@@ -21,7 +21,7 @@ import org.apache.ibatis.plugin.Signature;
import org.apache.ibatis.session.ResultHandler;
import org.apache.ibatis.session.RowBounds;
-import cokr.xit.foundation.AbstractComponent;
+import cokr.xit.foundation.component.AbstractBean;
/**조회 결과의 페이징 처리를 지원하는 MyBatis Interceptor
* @author mjkhan
@@ -40,7 +40,7 @@ import cokr.xit.foundation.AbstractComponent;
@Signature(type = ResultSetHandler.class, method = "handleResultSets", args = {Statement.class})
})
-public class MybatisPlugin extends AbstractComponent implements Interceptor {
+public class MybatisPlugin extends AbstractBean implements Interceptor {
protected Properties properties;
@Override
diff --git a/src/main/java/cokr/xit/foundation/web/AbstractController.java b/src/main/java/cokr/xit/foundation/web/AbstractController.java
index ec025d1..731e265 100644
--- a/src/main/java/cokr/xit/foundation/web/AbstractController.java
+++ b/src/main/java/cokr/xit/foundation/web/AbstractController.java
@@ -13,10 +13,10 @@ import org.springframework.web.servlet.ModelAndView;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
-import cokr.xit.foundation.AbstractComponent;
import cokr.xit.foundation.Access;
import cokr.xit.foundation.Assert;
import cokr.xit.foundation.Downloadable;
+import cokr.xit.foundation.component.AbstractBean;
import cokr.xit.foundation.component.QueryRequest;
import cokr.xit.foundation.data.paging.BoundedList;
@@ -42,7 +42,7 @@ import cokr.xit.foundation.data.paging.BoundedList;
* 을 명시한다.
* @author mjkhan
*/
-public abstract class AbstractController extends AbstractComponent {
+public abstract class AbstractController extends AbstractBean {
@Resource(name="objectMapper")
private ObjectMapper objectMapper;