반응형

스프링 21

[ERROR] Request method 'GET' not supported 해결

Request method 'GET' not supported 뿐만 아니라 Request method 'GET' not supported, Request method 'PUT' not supported 등등. Request method '{HTTP method}' not supported 관련 에러가 뜰 때 해당되는 포스팅이다. 보통 405 Method Not Allowed, 500 Internal Server Error와 함께 발생할 확률이 높다. 나의 경우는 특정 기능을 수행하거나 테스트할 때 위 문구와 함께 500 에러가 발생했다. 원래대로라면 body에 원하는 객체의 속성들이 담겨있어야 한다. 하지만 결과는? com.fasterxml.jackson.databind.exc.UnrecognizedPr..

[Spring] @Transactional로 DB 동시성 문제를 방지하자

웹 데이터 애플리케이션을 만들 때, dao에서 sql문으로 db에 접근하고 service에서 dao 메서드들을 이용하여 하나의 트랜잭션을 관리한다. 그런데 만약 이 애플리케이션을 여러 명이서 동시에 사용한다면? 동시성 문제가 발생할 수 있다. 동시성 문제란, 두 개 이상의 세션이 공통된 자원을 읽고 쓸 때 발생할 수 있는 문제를 의미한다. 이번 포스팅에선 이러한 동시성 문제와 트랜잭션에 대해서 알아보고, @Transactional 어노테이션으로 해결하는 방법을 알아볼 것이다. +) 22.10.13. 트랜잭션 격리레벨 설명 수정 및 보충 트랜잭션이란? DBMS에서 데이터를 다루는 작업의 단위를 의미한다. 용어상 정의로는 이해하기 어렵지만, 트랜잭션의 성질을 알아보면 보다 더 쉽게 이해할 수 있을 것이다. ..

[211222] 스프링과 리액트로 1인분 하기 위해 요즘 하고 있는 공부

예전에 '운동일지 다이어리'를 친구랑 같이 만들다가, 어쩌다가 흐지부지된 프로젝트가 있다. (안좋게 끝난 건 아니다. 서로 각자의 공부를 해야될 것 같다고 결론이 났다.) https://kth990303.tistory.com/190?category=886864 10월동안 잠깐 이 프로젝트를 중단하기로 했다. 이 프로젝트는 협업 프로젝트이기 때문에 내 일정 뿐만 아니라 친구 일정도 중요한데, 친구가 중간고사 끝나고 재정비를 가진 후 11월부터 프로젝트를 해야할 것 같다고 하여 10월 동안은 이 프 kth990303.tistory.com 요즘 헬스하면서 열심히 운동을 뛰고 있던 나에겐 좀 안타까운 상황... 그래서 좀 더 공부한 다음에, 저 프로젝트를 혼자 풀스택으로 해보려고 리액트와 rest api 스프링..

[Spring+React] 스프링과 리액트 연동해보기 (IntelliJ + Spring + Gradle + React)

원래는 BE는 스프링으로, FE는 타임리프로 열심히 프로젝트를 하고 있었다가, 비동기 처리 부분에서 타임리프의 한계를 느껴 java 공부는 잠시 뒤로 하고 리액트를 주구장창 파고 있는 중이다. 자바스크립트가 하다보면 재밌는데, 자바랑 너무 느낌이 다른 언어라 아직은 익숙치 않다... (자바가 꼰대언어라면, 자바스크립트는 미쳐 날뛰는 잼민이같은 느낌이랄까...) 아무튼 그래서 리액트 공부도 하고 있고, 스프링도 다루고 있으니 한번 둘을 연동해보는 환경세팅 포스팅을 작성해보면 좋을 것 같아 포스팅을 작성한다. 요구 선행지식 - 간단한 리액트 / 자바 지식 및 MVC 구조 리액트와 스프링을 연동하는 것이니, 당연히 리액트가 뭔지, 스프링이 뭔지 정도는 알아야 한다. 스프링을 할 줄 아려면 java 프로그래밍 ..

[211023] 회원가입 승인/대기/거절 기능 추가하기 (Thymeleaf, Spring Boot) (1)

이번 시간에는 프로젝트 이슈 #17에 해당되는 회원가입 승인 관련 내용을 포스팅하려한다. 참고로 아직 현재진행형 중인 이슈이므로, 참고만 해주길 바란다. 현재는 스프링시큐리티 권한 관련 약간의 버그가 존재하여 이후에 수정해주어야 한다. github #21, #22 수정완료. 수정완료된 버전으로 포스팅하였음. https://github.com/kth990303/BOJStudyList/issues/17 회원가입 시, 승인/대기/완료 창을 만들어주세요. · Issue #17 · kth990303/BOJStudyList 현재는 회원가입을 진행할 경우, 별다른 확인조치 없이 가입이 완료됩니다. 이는 그룹 인원파악 및 보안에 치명적일 수 있습니다. 10월 중순~말까지 이 기능을 완료해주세요. 회원가입을 진행할 gi..

[211004] [일기] 프로젝트를 위한 스프링 검증파트 공부중...

현재 내 프로젝트 이슈의 절반은 에러처리 관련 이슈이다. BE: Spring Boot + JPA FE: Thymeleaf (내가 리액트를 잘 못하니까!) 로 진행하는 프로젝트 깃헙이다. 구글링하면서 이것저것 알아보던중, @Valid, @Validated, BindingResult, 그리고 타임리프의 th:object, th:field 기능으로 에러처리를 처리할 수 있음을 알았는데, 알고보니 이부분이 김영한 스프링 MVC 2편의 검증/에러처리 파트에서 아주 상세히 다룬다고 한다. 이제 이것들만 들으면 저 이슈들을 다 처리할 수 있겠군! 금방이겠네? 언제 다듣지?ㅋㅋㅋ 내 프로젝트는 현재 따로 프론트엔드 프레임워크를 사용하지 않고 Thymeleaf 템플릿엔진으로 프로젝트를 진행하고 있기 때문에 섹션9는 포함..

[Java] 자바 final의 역할과 싱글톤 패턴

스프링 MVC 2편을 듣던 도중, 싱글톤 패턴 관련 내용이 나와서 오랜만에 싱글톤 패턴 내용을 복습하던 중 final에 대한 궁금증이 생겨서 공부한 내용을 포스팅해보려 한다. (역시 Java 기본기가 중요한듯하다.) 먼저 singleton pattern이 어떤 과정에서 필요하게 됐는지부터 서술하겠다. 싱글톤 패턴이 필요했던 이유 Controller에서 model에 attribute할 때, 똑같은 객체를 여러 메소드에서 attribute해야 하는 경우가 생길 수 있다. 이럴 경우 코드가 중복되며, 코드 길이가 길어지기 때문에 가독성 또한 좋지 않다. List와 같은 컬렉션 객체를 컨트롤러 내의 수많은 메소드에 attribute하기엔 중복되는 코드가 많기 때문에 @ModelAttribute 관련 메소드를 아..

[Spring][TDD] MockMvc를 이용한 Controller Test

우리가 API를 개발하거나, 컨트롤러에서 view로 model을 넘겨줄 때, 또는 spring security로 로그인하여 권한이 있을 때만 service logic을 테스트할 수밖에 없는 경우가 분명히 존재한다. 이럴 땐, 직접 실행하여 테스트해보는 수밖에 없을까? 그렇지 않다. 임의의 가짜 객체 Mock을 만들어서 가상으로 테스트해보면 된다! 이 때 사용되는 방법엔 @WebMvcTest, @AutoConfigureMockMvc가 있는데, 둘의 기능은 거의 비슷하나, @AutoConfigureMockMvc가 전자와는 다르게 @Service, @Repository가 붙은 객체들도 모두 메모리에 올린다는 차이점이 존재한다. 또한, @WebMvcTest는 @SpringBootTest의 MockMvc와 충돌할..

[Spring] 스프링이 태어난 이유_서블릿, JSP로 만든 MVC의 한계

김영한님의 스프링 입문과 기본편을 듣고, 스프링 mvc편을 들으며 Servlet, JSP를 하면서 느낀 점은 요즘은 스프링 프레임워크가 도입돼서 정말 다행이라는 점이다. 이렇게 느낀 이유를 아래에 포스팅해보겠다. Servlet을 하면서 사실 나는 6개월 정도 전에 Spring을 아예 모르고 단순히 웹개발을 해보고 싶다는 마음에 커리큘럼을 알아보다가 완전 쌩 Servlet부터 배워보려고 Servlet을 처음 접한 적이 있다. 그 때 당시 내가 짜던 코드는 회원가입 서비스를 만들어보려고 책을 참고해서 변형해 만들어본 코드였는데, MemberDAO, MemberVO, MemberServlet 세 개의 클래스 코드를 열심히 짠 기록이 깃헙에 남아있어 코드를 가져와보았다. 아래 코드는 HttpServlet을 상속..

[Spring] JPA 기본편 환경세팅하면서 생겼던 시행착오

이걸 My Diary (Java) 카테고리에 넣을지 Jpa_Basic 카테고리에 넣을지 굉장히 고민했는데, 어차피 블로그 자체가 내 일기니까 Jpa_basic에 넣기로 했다. 이후에 해결책을 알게 된다면 이글을 수정후 추가하도록 하겠다. (21.04.03. 14:30 추가) 이 포스팅은 Gradle, Spring Boot로 설정하려다가 겪은 시행착오를 포스팅하는 글이다. 만약 강의 그대로 Maven으로 세팅해주고 Spring Boot 없이 순수한 환경에서 따라했는데도 에러가 난다? 그러면 Java JDK 11이 아니거나 pom.xml을 잘못 설정했을 확률이 높다. 아무래도 JPA 기본편이 가장 오래된 강의이다 보니 버전 충돌이 생겨서 pom.xml 문제가 좀 많은듯하다. JAVA JDK11인데 에러났을 ..

반응형