Spring
-
[Spring] DAO / DTO / VO 정리Spring 2022. 10. 5. 01:31
처음 스프링을 접하게 되면 가장 헷갈리는 개념 중 하나가 DAO, DTO, VO가 아닐까 생각이 듭니다. 제가 프로젝트를 했을 당시에도 이 개념이 헷갈리시는 분들이 많아서 긴 시간을 들여 설명 했던 기억이 납니다. 그래서 블로그에도 이 개념들을 간단하면서도 명료하게 정리해 두려고 합니다. DTO란? 먼저 DTO입니다. 줄임말을 풀어쓰는 순간 이해가 훨씬 쉽습니다. DTO는 Data Transfer Object입니다. "데이터 전송 객체" 라는 뜻입니다. 클라이언트에서 서버로 데이터를 전송할 때, 이 DTO 객체에 필드들을 매핑하여 전달합니다. 필드의 이름과 타입만 맞춘다면 디스패쳐 서블릿이 자동으로 데이터들을 이 DTO객체에 매핑해서 전달합니다. 그리고 각 계층간 데이터를 전송할 때에도 사용합니다. Sp..
-
[Spring] @PutMapping 시 DTO 객체에 매핑이 안될 때Spring 2022. 9. 13. 03:13
게시글 작성, 게시글 수정 로직을 구현하던 중 발생한 오류입니다. 각각 PostMapping, PutMapping으로 컨트롤러를 만들고, ajax로 클라이언트와 연동하려는데 게시글 수정에서만 오류가 났다. 보다시피 둘의 클라이언트 코드는 거의 비슷하다. 컨트롤러로 넘겨줄 데이터를 params에 넣어서 보낸다. 02:51:03.256 ERROR --- [http-nio-8080-exec-33] c.w.a.e.CommonsExceptionHandler.handleException:32 - + 1. Exception type: java.sql.SQLException 02:51:03.256 ERROR --- [http-nio-8080-exec-33] c.w.a.e.CommonsExceptionHandler.ha..
-
[Spring] Swagger 2.x.x 버전 적용하는 방법Spring 2022. 9. 6. 03:35
Swagger를 이용하면 API문서를 자동화할 수 있습니다. Swagger 관련 글들이 유독 스프링부트 환경에서 적용하는 방법이 많아서, 스프링5 환경에서의 스웨거 초기 설정 법을 정리해 둡니다. *스웨거 버전은 2.9.2 사용하였습니다. 1. pom.xml 의존성 추가 2.9.2 io.springfox springfox-swagger2 ${io.springfox.swagger-version} io.springfox springfox-swagger-ui ${io.springfox.swagger-version} swagger2와 swagger-ui 두가지를 설정합니다. 같은 버전을 공유하기 때문에 버전은 프로퍼티로 관리하였습니다. pom.xml 파일을 수정한 후엔 꼭 update project를 진행합니다..
-
[Spring] 트랜잭션이란? 전파 (Transaction Propagation) 속성과 격리레벨(Isolation level)Spring 2022. 9. 1. 23:39
트랜잭션 (Transaction)이란? Transaction is All or Nothing! 트랜잭션을 한마디로 정의하자면 다음과 같습니다. SQL에서 DML문장 수행 후 COMMIT 과 ROLLBACK을 적용하는 것과 같은 개념입니다. 예를들어, 상대방에게 계좌이체를 하는 상황을 가정합니다. 내 통장에서 돈이 빠져나가고 -> 상대방의 계좌에 돈이 입금되는 것까지 완료되어야 계좌이체가 성공했다고 할 수 있습니다. 만약 내 통장에서는 돈이 빠져나갔는데, 상대방의 계좌에는 입금이 안되었다면, 내 통장에서 돈이 빠져나가는 과정까지 모두 취소되어야 합니다. 이렇게 일련의 과정들을 하나의 단위로 묶어서 모두 성공시 수행(COMMIT), 하나의 처리라도 오류가 발생한다면 원래 상태로 되돌리는 것(ROLLBACK)..
-
[Spring] Redirect후에도 전송파라미터를 유지할 수 있을까? RedirectAttributes, @RequestParam에 대해Spring 2022. 8. 19. 00:41
리다이렉트 방식은 페이지를 이동하면 이전 요청은 사라지고 새로운 요청이 발생합니다. 이과정에서 아무 처리를 해주지 않는다면 전송파라미터를 리다이렉트 후에 가져올 수 없습니다. 정말 흔히 볼 수 있는 게시판을 예로들어 상황을 가정해 보겠습니다. 보통 작성, 수정, 삭제와 같이 변경이 일어나는 요청은 리다이렉트로 처리합니다. 이에 따라 게시글 수정창에서 post요청으로 수정 처리를 한 후에는 상세페이지 조회 창으로 리다이렉트 처리를 했습니다. 그러나 리다이렉트로 이동하였기 때문에 이전 요청은 종료되고 새로운 요청이 발생하여 현재 페이지 번호를 나타내주는 currPage파라미터 값을 얻어올 수 없었습니다. 이 상태에서 페이지 목록으로 되돌아가면 예외가 발생합니다. 이 문제를 해결하기 위해 RedirectAtt..
-
[Spring] Show @RequestMappings가 보이지 않을 때Spring 2022. 8. 14. 18:00
분명 컨트롤러에 url매핑을 다 해놨음에도 show @RequestMappings를 보면 아무것도 나타나지 않았다. context파일에 beans graph도 보이지 않는 상황 원인은 해당 프로젝트에 spring config설정이 빠져있기 때문이었다. 프로젝트 우클릭 - [properties] - [Spring] - [Beans Support] 로 들어가면 원래는 저곳에 context파일들이 들어있어야 하는데 아무것도 없다. root-context.xml과 servlet-context.xml 파일을 설정한 후 apply를 누르면 정상적으로 나타난다. 안나오던 beans graph도 정상으로 나온다.
-
이클립스에 gradle project import하기(김영한 스프링 입문)Spring 2022. 4. 16. 14:17
인프런의 김영한 스프링 강좌는 intellij IDEA로 진행되는데, 이클립스를 사용할 경우 스프링부트 앱을 임포트하는 방식이 조금 달라서 블로그에 남겨둔다. 이클립스 실행 후 [File] - [import] - [Gradle] - [Existing Gradle Project] 를 클릭한다. 그 후 gradle import 마법사가 실행된다는 내용이 뜨는데 Next 눌러주면 된다. directory에 springboot.io에서 다운받은 폴더의 경로를 지정해주고 Finish를 누르면 알아서 import해준다. intellij에서는 gradle파일만 오픈했지만 여기서는 폴더 전체를 경로로 지정해줘야한다. 처음 임포트하면 시간이 좀 걸린다. 기다리면 정상적으로 프로젝트가 임포트된다.