반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- char
- 주사위굴리기
- SQL
- 내맘대로정리
- 시뮬레이션
- Char[]
- 코딩테스트
- 차이
- 알고리즘
- 자바오류
- Spring
- 백준
- 차이점
- 참조타입
- include태그
- java
- 데이터탑입
- mybatis
- 프로그래머스
- primitivetype
- json파싱
- 변수
- string
- 원시타입
- Exception
- ClassPathResource
- sql태그
- JSON
- ReferenceType
- 자바
Archives
- Today
- Total
재채기는 H
Spring ClassPathResource를 이용한 /src/main/resources 경로 JSON파일 파싱하기 본문
반응형
프로젝트 운영서버 초기 배포 후,
스키마 테이블에 옵션값을 쿼리로 insert해야 주어야하는 불편함이 있었다.
그래서 [초기옵션설정]이란 버튼을 통해 최초 생성에만, JSON파일을 파싱하여 옵션을 설정하고자 한다.
우선 JSON파일은 /src/main/resources/option 경로에 생성해두었다.
/src/main/resources 경로의 하위파일을 어떻게 불러올 수 있을 까?
간단하다.
스프링에서 제공해주는 ClassPathResource 클래스를 사용하여 가져올 수 있다.
ClassPathResource는 classpath에 설정한 resources경로를 인식하여 하위파일을 가져온다.
classpath의 기본경로가 src/main/java, src/main/resources인데, 이 두 경로 중 resources폴더를 탐색한다.
프로젝트의 .classpath파일에서 경로를 확인할 수 있다!
이후 InputStream 타입으로 읽어와 JSON파싱하면 된다.
import org.springframework.core.io.ClassPathResource;
/**
* 초기옵션값 세팅
*/
public int insertInitOption(RequestContext session) throws Exception {
String filePath = "/option/InitOption.json";
ClassPathResource classPathResource = new ClassPathResource(filePath);
if(!classPathResource.exists()){
throw new IllegalArgumentException();
}
Object initOptJsonObj = new JSONParser().parse(new InputStreamReader(classPathResource.getInputStream(), "UTF-8"));
JSONArray initOptjsonArr = (JSONArray)initOptJsonObj;
int result = 0;
try {
if (initOptjsonArr.size() > 0){
Map<String, Object> map = new HashMap<>();
for(int i=0; i<initOptjsonArr.size(); i++){
JSONObject jsonObj = (JSONObject)initOptjsonArr.get(i);
map.put("optCd", (String)jsonObj.get("OPT_CD_ARR"));
map.put("optNm", (String)jsonObj.get("OPT_NM_ARR"));
map.put("optType", (String)jsonObj.get("OPT_TYPE_ARR"));
map.put("optValue", (String)jsonObj.get("OPT_VALUE_ARR"));
map.put("optDesc", (String)jsonObj.get("OPT_DESC_ARR"));
map.put("str1", (String)jsonObj.get("STR_1_ARR"));
map.put("str2", (String)jsonObj.get("STR_2_ARR"));
result = mapper.insertInitOption(session, map);
if(result == 0) {
break;
}
}
}
}catch(Exception e) {
throw e;
}
return result;
}
ClassPathResource에 관한 상세정보는 아래 링크의 document에서 확인할 수 있다.
반응형
'spring' 카테고리의 다른 글
MyBatis <sql>과 <include> 정리 (0) | 2022.07.24 |
---|---|
이클립스 프로젝트 import 안될때 (7) | 2020.07.19 |
Comments