@Autowired 시 @Qualifier("apiCallComp") 를 명시한 이유는 동일한 인터페이스를 구현한 구현체가 여럿 있을경우 생기는 충돌을 미리 예방하기 위해 습관적으로 코딩 하는 부분 이여서 @Autowired만 사용하여도 무방 합니다.
파리미터를 전달 받을때 @PathVariable 을 포함한 모든 정보를 SearchParamVO에 정의 했기 때문에 @ModelAttribute SearchParamVO 으로 받았지만 restfull url방식에는 맞지 않을거 같아 연습시 참고 하지 않는게 좋을거 같습니다.
SearchParamVO의 내용은 아래와 같습니다.
@Getter@Setter@ToStringpublicclassSearchParamVO{
private String searchColumn;
private String searchWord;
private String searchYear="2017";//2017년 이후 데이터는 공공데이터포털에 거의 없어서 2017년으로 기본설정private String searchSiDo="11680";//서울시private String searchGuGun="11680";//강남구private String searchPageNo="1";//1페이지
}
사용하는 api에 존재하는 데이터가 있는 검색 조건을 미리 설정 해서 무조건 데이터가 검색 되게 진행 했습니다.
이 부분 validation 어노테이션 이용해서 검증을 추가 해주셔야 합니다.
front-end부분에도 관련 영역만 만들고 작업은 진행 하지 않았습니다.
back-end는 위의 내용까지 간단하게 정리가 되었습니다. 다음에는 react front-end 작업 내용을 정리 하겠습니다.
사용자 화면에서 호출할 backend 작업 부터 진행을 합니다. 작업할 내용이 많지 않기 때문에 gradle 구성을 간단하게 (data-jdbc, data-jpa, web, web-service, lombok, h2database, querydsl-jpa) 기준으로 작성 해줍니다.
패키지 구성은 아래의 이미지와 같습니다. 패키지 구성은 큰 의미가 있는건 아니고 제가 개인적으로 작업 시에 많이 사용하는 구성 입니다.
(패키지 구성, 함수명, 클래스명 변수명 언제나 고민이 많으실텐데 상황에 맞게 구성하는게 좋다고 생각 합니다. 가장 중요한건 룰을 만들 없으면 그 룰을 지키는 거라고 생각 합니다. 제가 만든것도 잘 안지키니...)
DB에 저장된 내용은 법정동 코드를 조회하기 위한 테이블 하나 이기 때문에 그에 상응 하는 domain이 하나만(아... 오타 있네...) 존재 하고 역시 관련 repository도 하나만 존재 합니다. custom, impl 패키지가 비어 있는데 이건 queryDsl을
사용하는 경우 채워지는 영역이라 현재는 비어 있습니다.(앞으로도 비어 있을거라 삭제 하게 될거 같습니다.)
answer패키지 하위로 실제 작업을 진행할 controller, service, dto 관련 패키지를 생성 했습니다.
resources 하위에는 application.properties이외에 h2 database초기화에 사용할 schema.sql과 data.sql이 자리 잡고 있습니다.
개인 프로젝트로 진행하는 CMS가 너무 규모가 크고 진행이 더뎌... 손에 잡히지 않아 몇달째 1~2주 단위로 진행 하는 토이 프로젝트를 계속 하고 있습니다. 지금 진행하는 내용 전국어린이사고다발지역 조회 현재 위치 기준으로 혹은 검색지 기준으로 어린이 사고 다발지역을 검색하고 인지 해서 우리 아이의 안전을 미리 미리 준비하는 그런 사이트 인데... 공공데이터 포털의 데이터가 충실하지 못해... 써먹을 만한 무언가가 되질 못했습니다. (데이터 구성을 안하는건지 아니면 조건에 부합하는 데이터가 그게 다인건지 정말 검색 데이터가 조촐 합니다.)
우선 참고한 api는 https://www.data.go.kr/tcs/dss/selectApiDataDetailView.do?publicDataPk=15058925 페이지 입니다.
서비스 구성은 아래와 같습니다. aws(apache)<->gcp(docker) react<->spring-boot jar h2 memory db
화면은 bootstrap으로 간단하게 구성 했습니다. 현재까지 진행 상태는 react<->spring-boot 데이터 연동 및 노출 까지이고 앞으로 docker에 jar이미지 포팅 및 react 네이버 지도 연동이 남았습니다.