목록분류 전체보기 (444)
코딩항해기
중프 진행 때 설계가 부족했다는 피드백이 많아 이를 보완하기 위해 설계와 파트 간의 소통을 더욱 신경쓰고 있다.지난 설계 조율 후 다시 정리된 자료를 받아 설계 수정된 사항을 공유했다. View 파트 설계 자료 (10.22)더보기jsp 파일명과 페이지마다 데이터 노출 개수 (페이지네이션 때 잘라서 줘야하는 데이터양)에 대한 내용 추가 정리 요청일부 기능(마이페이지 등) Controller 담당 Controller 끼리 조율 후 전달포인트는 매번 조회가 아닌 저장된 값을 불러 사용하는 것으로 변경 전달 (갱신은 Controller에서 진행)동기 비동기 조율 등 Controller 담당파트 설계빨간색은 기존 전달 자료에서 삭제된 부분초록색은 기존 전달 자료에서 변경되거나 추가된 부분옅은 회색은 비동기 표시(..
인텔리제이를 사용하고 있어서 롬복 사용에 불편함을 느끼지 못하고 logback 등등 편하게 사용하고 있었는데 코드를 공유하면서 보니 이클립스에서 logback 오류가 발생하는 것을 알게 됐다. 1. 의존주입관련해서 찾아보니 이클립스는 롬복을 사용하기 위해서 의존주입을 해야한다는 것을 알게 됐고, 롬복 사용, logback 사용을 위한 모든 의존을 주입했다. *버전 오류가 날 경우 3번 참고 : version 태그 삭제 org.slf4j slf4j-api 1.7.32 ch.qos.logback logback-classic 1.4.12 org.projectlombok lombok provided 의존을 주입하고나니 롬복에 대한 어노테이션을 import할 수 있었다. 그런데 import해도 logback을 사..
담당하고 있는 Util 작업 중 MultipartFile 진도를 나가게 되어 해당 방식을 코드에 적용시키며 발생한 고정 경로문제를 해결했다. 설계 설계는 간단하게 선언부와 기능을 요약해 작성했으며 해당 설계를 바탕으로 코드 흐름을 짜고 구현했다. (후술할 경로문제로 초기 설계에서 많은 설계 수정을 거친 최종 버전이다.) 문제 발생외부 경로에 파일을 생성해 거기서 이미지를 저장하고 관리한다면 발생하지 않는 문제지만, 현재 이미지는 webapp 하위 uploads 폴더 아래에서 관리할 예정이므로 팀원 모두의 프로젝트 파일 경로가 다르다는 문제가 발생한다. 그렇기 때문에 이 상태 그대로 상단이나 config 파일에 경로를 작성하게 되면 팀원들마다 직접 경로를 맞춰 수정해야하고, 프로젝트 파일 폴더 경로가 바뀌..
프로젝트 경로를 받아오기 위해 여러 경로 메서드에 대한 기록을 남긴다.ServletContext는 직접 Spring 컨테이너가 주입해줄 수도 있고, session에서 받아올 수도 있으며, request에서 받아올 수도 있다. 기록한 메서드 외에도 다양한 경로 메서드가 있다. (+++ target 폴더로 경로가 뜨는 것은 인텔리제이 로컬 서버 기본 설정이 target으로 되어있기 때문이다. 수정하면 수정한대로 뜬다.) [Tip] 인텔리제이 정적리소스 실시간 반영인텔리제이의 로컬 서버는 target 폴더를 통해 빌드한 소스로 보여주기 때문에 정적리소스가 추가되면 서버를 재시작하지 않는 이상 반영되지 않는다. 이 문제를 로컬 서버 설정 수정을 통해 해minibcake.tistory.com log.warn("-..
NoClassDefFoundError : org/springframework/core/JdkVersion NoClassDefFoundError : org/springframework/core/JdkVersion 설명만 읽고서는 의존성이나 버전 문제로 보였는데, 트랜잭션 걸어둔 부분에서 문제가 생겨 롤백이 일어나면서 뜬 오류 페이지였다. (강제 롤백 상황 구현했더니 발생/항상 JdkVersion 오류의 원인이 트랜잭션인 것은 아님) 트랜잭션으로 인해 롤백될 때 생기는 오류 코드가 상황에 따라 꽤 다양하게 있는 것 같아 기록용으로 남겨둔다.
AOP 개념을 처음 배우다보니 설계도 우여곡절이 많았는데 관련 서적과 검색, 실무에 대해 아시는 분의 조언을 통해 최종 횡단 기능을 정리하고 AOP 작업을 진행했다. 설계 검증 로직과 반복되는 로그를 공통 기능으로 분리했다. 초기에는 url을 직접 수정해 유효하지 않는 요청을 하는 것을 막을 AOP도 가지고 있었는데, 해당 AOP는 Service에서 검증하는 것보단 Controller가 시작될 때 검증해야한다는 점에서 이상함을 느끼게 됐다. 여러 검색과 조언을 통해 해당 로직은 View에서 페이지를 로드할 때 검증하는 것으로 로직을 수정할 수 있었다. Service를 감싸서 AOP를 작업하는 것도 가능은 하지만, 이미 페이지 로드가 들어간 다음에 검증이 진행된다는 점이 깔끔하지 않다고 생각했다. AOP..
Merge 할 브랜치를 잘못 선택하거나 코드에 큰 문제가 있어 PR을 취소해야할 일이 생길 수 있다.이때 PR하기 전 상태로 돌아갈 수 있는 Revert를 Git-Hub에서 제공하고 있으므로 해당 방식을 이용해보자. 먼저 취소할 PR에 들어간다.Pull requests에서 closed(이미 merge된 pr)을 선택하면 작업 완료된 PR을 확인할 수 있다. 하단에 쭉 내려보면 Revert가 있다. 해당 버튼을 누르면 PR이 새롭게 생성된다.이는 변경사항을 되돌리는 PR이므로 되돌릴 브랜치로 PR이 갈 수 있게하면된다. 자동 설정되므로 확인만 한 번씩 하면 된다. PR을 올린 뒤 Merge하면 해당 PR 이전으로 상태가 돌아간다. 물론 해당 PR도 Revert시켜 취소할 수 있다.새롭게 상태가 추가되는..
MultipartFile을 사용해 이미지 파일을 업로드할 수 있다.먼저 MultipartFile로 이미지 파일을 업로드 받기 위해서는 몇 가지 환경을 조성해야한다. DTO에 MultipartFile을 타입으로 갖는 필드 추가해당 필드를 통해 view로부터 전송되는 MultipartFile을 자동 주입 받을 수 있게 된다.@Getter @Setter @ToStringpublic class ImageDTO { private int imageId; private String path; private int bid; private MultipartFile image;} 이때 MultipartFile를 자동으로 import하지 못하는 경우 의존성을 추가한다. commons-fileupl..
Request processing failed: org.springframework.web.multipart.MultipartException: Failed to parse multipart servlet request 해당 에러는 여러가지 문제로 발생한다. 코드에 이상이 없다는 가정하에 해당 문제가 반복된다면 서버(톰캣)설정을 추가해야한다.' (eclipse는 Server - context.xml) 그런데.. 인텔리제이는 톰캣의 context.xml 파일이 숨겨져있어 해당 파일을 수정할 수 있도록 설정을 만져야한다.먼저 File - Project Structure에 들어간다. modules에서 프로젝트를 열고 web을 선택해 Add Application Server-specific descriptor..
@Order동일한 조인포인트에 여러 개의 Advice가 지정된 경우, 여러 개의 AOP가 같은 시점에 동작하게 되는 중첩 AOP상태가 된다. 특히 Spring framework에서 정의한 AOP가 사용될 때 자연스럽게 중접 AOP가 되는 경우가 많이 있는데, 이 때 먼저 실행해야하는 AOP가 있다면 @Order를 통해 우선 순위를 지정할 수 있다. Spring에서 자주 사용하는 @Transectional 어노테이션을 사용하는경우 Transaction Advisor 다음에 다른 Advisor가 위치하면 해당 Advisor 또한 트랜잭션에 포함되므로 수행되는 시점은 굉장히 중요하다. 또한 경우에 따라 순서가 뒤섞이며 의존성 관련한 문제가 생길 수도 있다. 문법위치는 중첩되는 Advice 메서드 위에 위치한..