
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
package com.takensoft.common.config;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import org.egovframe.rte.fdl.cmmn.trace.LeaveaTrace;
import org.egovframe.rte.fdl.cmmn.trace.handler.DefaultTraceHandler;
import org.egovframe.rte.fdl.cmmn.trace.handler.TraceHandler;
import org.egovframe.rte.fdl.cmmn.trace.manager.DefaultTraceHandleManager;
import org.egovframe.rte.fdl.cmmn.trace.manager.TraceHandlerService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.AntPathMatcher;
import org.springframework.web.servlet.view.json.MappingJackson2JsonView;
/**
* @author takensoft
* @since 2025.01.22
* @modification
* since | author | description
* 2025.01.22 | takensoft | 최초 등록
*
* 기본 설정을 위한 Config
*/
@Configuration
public class AppConfig {
/**
* @return MappingJackson2JsonView - JSON 응답을 위한 뷰 객체
*
* JSON 응답을 반환할 때 사용하는 Jackson ObjectMapper를 설정하여, 모델에서 값을 추출하는 방식으로 JSON 응답을 생성
*/
@Bean(name="jsonView")
public MappingJackson2JsonView getJsonView () {
ObjectMapper objectMapper = getObjectMapper();
MappingJackson2JsonView jsonView = new MappingJackson2JsonView(objectMapper);
jsonView.setExtractValueFromSingleKeyModel(true);
return jsonView;
}
/**
* @return ObjectMapper - JSON 직렬화 및 역직렬화를 위한 객체
*
* Java Time API를 위한 모듈을 등록하고, 날짜 포맷을 설정하는 등 ObjectMapper를 커스터마이즈하여 JSON 변환
*
*/
@Bean(name = "objectMapper")
public ObjectMapper getObjectMapper() {
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JavaTimeModule());
//기본 날짜 포맷 비활성화
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
//새로운 날짜 포맷 세팅
/*SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
mapper.setDateFormat(dateFormat);
mapper.setTimeZone(TimeZone.getTimeZone("Asia/Seoul"));*/
return mapper;
}
/**
* @return AntPathMatcher - 경로 패턴 매칭을 위한 객체
*
* 경로 패턴을 매칭하여 URL 경로를 처리하는 데 사용되는 객체를 반환
*/
@Bean
public AntPathMatcher antPathMatcher() {
return new AntPathMatcher();
}
/**
* @return DefaultTraceHandler - 추적 처리를 위한 기본 핸들러
*
* 추적 요청을 처리하는 기본 핸들러를 반환
*/
@Bean
public DefaultTraceHandler defaultTraceHandler() {
return new DefaultTraceHandler();
}
/**
* @return DefaultTraceHandleManager - 추적 핸들러 관리 서비스 객체
*
* 여러 추적 핸들러와 경로 매칭 설정을 관리하는 서비스를 제공
*/
@Bean
public DefaultTraceHandleManager traceHandlerService() {
DefaultTraceHandleManager defaultTraceHandleManager = new DefaultTraceHandleManager();
defaultTraceHandleManager.setReqExpMatcher(antPathMatcher());
defaultTraceHandleManager.setPatterns(new String[]{"*"});
defaultTraceHandleManager.setHandlers(new TraceHandler[]{defaultTraceHandler()});
return defaultTraceHandleManager;
}
/**
* @return LeaveaTrace - 추적 기능을 위한 LeaveaTrace 객체
*
* 추적 핸들러 서비스를 설정하여 추적 기능을 활성화
*/
@Bean
public LeaveaTrace leaveaTrace() {
LeaveaTrace leaveaTrace = new LeaveaTrace();
leaveaTrace.setTraceHandlerServices(new TraceHandlerService[]{traceHandlerService()});
return leaveaTrace;
}
}