본문 바로가기
반응형

Develop/Spring+JPA59

[Spring 5 프로그래밍 입문] chapter 2 - 스프링 시작하기 목차 chapter 2: 스프링 시작하기 빌드와 의존 전이 Spring bean 등록하기 Spring은 객체 컨테이너다? 싱글톤 객체 Chapter 2 - 스프링 시작하기 📚 빌드와 의존 전이 빌드 도구에는 크게 Ant, Maven, Gradle이 있다. 요즘에는 Maven과 Gradle을 많이 사용하는 편이다. 📕 Maven 설정 정보 관리 파일: pom.xml 코드 컴파일/실행 시 로 설정한 아티팩트 파일 사용 로컬 레포지토리에 .jar 파일이 존재하면 해당 파일 사용 로컬 레포지토리에 존재하지 않으면 메이븐 원격 중앙 레포지토리에서 다운받음 의존 전이; Transitive Dependencies 를 통해 아티팩트 파일을 다운 받을 때, 해당 아티팩트가 의존하는 아티팩트까지 다운로드 한다. 의존하는 .. 2022. 5. 21.
[Spring] Spring의 트랜잭션 관리 (feat: @Transactional) 📑 목차 트랜잭션이란? 트랜잭션 예제 트랜잭션 ACID 트랜잭션 관리의 종류 비즈니스 로직과 트랜잭션 코드의 분리 선언적 트랜잭션 관리 vs 프로그래밍적 트랜잭션 관리 @Transactional이란? AOP @Transactional 예제 @Transactional의 동작 원리 테스트와 @Transactional 😮 트랜잭션이란? : DB 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들 📚 트랜잭션 예제 온라인 쇼핑몰에서 결제할 때를 생각해보자. 연로그는 친구의 생일을 앞두고 생일 선물을 사려고 한다. 선물을 골라 결제할 때 총 2가지 작업이 이루어진다. 판매처에 돈 보내기 판매처에서 돈 받기 1만 성공하거나 2만 성공하는 경우가 발생해서.. 2022. 5. 8.
[Spring] @RequestBody가 빈 생성자가 필요한 이유 (hint. ObjectMapper) com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `클래스명` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator) 에러 Spring에서 @RequestBody를 통해 데이터를 가져오는 중에 위와 같은 에러를 만났다. 구글링을 해보니 하나같이 빈 생성자를 생성하라고 하는데 대체 왜? 라는 생각이 들었다. Spring은 Http Message Body를 읽기 위해 HttpMessageConverter를 사용한다. 클라이언트로.. 2022. 5. 1.
[Spring] 생성자 주입 vs 필드 주입 vs 수정자 주입 의존성 주입; Dependency Injection Spring에서 의존성을 주입하는 방법은 3가지가 있다. 생성자 주입; Constructor Injection 필드 주입; Field Injection 수정자 주입; Setter Injection 결론부터 말하자면 '생성자 주입'이 가장 좋다. 각 주입이 어느 차이점이 있는지 살펴보자. 생성자 주입; Constructor Injection final 키워드 선언 가능 테스트 코드 작성 용이 @Controller public class HomeController { private final GameService gameService; // Spring 4.3 이전 버전이라면 @Autowired 필요 public HomeController(GameServi.. 2022. 4. 28.
[Spring] @ExceptionHandler로 API 예외 한번에 처리하기 목차 1. 서론 2. @ExceptionHandler 3. 상태 코드 바꾸기 4. Exception 한꺼번에 처리하기 5. 모든 Controller에 적용시키기 🙋‍♀️ 서론 API를 호출하다 보면 예외가 많이 발생된다. controller에서 처리하려고 로직을 짜다보면 수많은 중복 코드가 발생한다. Spring에서는 이를 편리하게 처리하기 위해 @ExceptionHandler라는 어노테이션을 지원해준다. 이번 글에서는 에러 처리 방법에 대해 공부해보겠다. 🚀 @ExceptionHandler Controller에서 @ExceptionHandler가 붙은 메서드를 이용하면 특정 예외를 처리할 수 있다. Controller 내부에서 어떠한 API가 호출되다가 IllegalArgumentException이 발.. 2022. 4. 21.
[Spring Security] 초간단 로그인 만들기 이전부터 아주 천천히 진행하고 있던 토이 프로젝트의 로그인 기능을 드디어 구현했다. 이번 달 ~ 다음 달 안에는 종료되어야 마음이 편할텐데 가능하..겠지..?😂 본 포스팅에서는 복잡한 로직 다 빼고 Spring Security를 적용만 해보는 과정을 담았다. 1. 준비 🔻 이전 글 참고: https://yeonyeon.tistory.com/185 [Spring Security] 스프링 시큐리티 간단 적용기 본 글은 토이 프로젝트에 Spring Security를 적용하는 과정에 대해 포스팅한다. Spring Security에 관한 디테일한 이론 지식이나 동작 원리 등에 대해서는 생략한다. 1. 개요 Spring Security : J.. yeonyeon.tistory.com 2. 동작 방식 먼저 Sprin.. 2022. 3. 7.
[Spring Security] 스프링 시큐리티 간단 적용기 본 글은 토이 프로젝트에 Spring Security를 적용하는 과정에 대해 포스팅한다. Spring Security에 관한 디테일한 이론 지식이나 동작 원리 등에 대해서는 생략한다. 1. 개요 Spring Security : Java 환경에서 인증과 권한 부여와 관련된 기능을 제공해주는 프레임워크 Spring Security를 적용하게 된 계기는... 그냥 써보고 싶었다.😉 Spring만 봐도 배울게 산더미인데 Spring Security까지 파자니 이도저도 못할 것 같아 공부 우선 순위에서 밀려났었다.... 그러다 토이 프로젝트 팀원 분이 저희 Spring Security 적용하나요? 물어보시길래 어떻게 쓰는지 모르겠지만!! 어차피 써보고 싶었던거 일단 부딪혀 봐야겠다고 생각했다. 2. 개발 환경 S.. 2022. 2. 7.
[Spring] NestedServletException - Name for argument type [java.lang.Long] not available 에러 org.springframework.web.util.NestedServletException: Request processing failed; java.lang.IllegalArgumentException: Name for argument type [java.lang.Long] not available, and parameter name information not found in class file either. 에러 parameter name information, 파라미터 이름에 대한 정보를 찾지 못하는 문제이다. postman으로 테스트했을 때는 문제가 없었으나 테스트 코드를 작성하니 위 에러가 발생했다. 방법1 👉 컨트롤러에서 파라미터 이름에 대한 정보만 추가 테스트 코드 굉장히 간단한 구조이다.. 2022. 1. 28.
PATCH 메소드는 언제 사용하는가? 목차 1. 문제 발생 2. 개념 되짚어보기 3. Java와 PATCH 4. 개선 방법 1. 문제 발생 현재 JPA, Spring 기반으로 토이 프로젝트를 진행 중인데 고민이 하나 생겼다. 설정 값들은 RDB에 저장되며 PK를 제외하고는 값 수정이 가능하다. 예를 들어 이름, 나이, 생일, 직장을 변경할 수 있다고 하자. 그러면 API를 아래와 같은 방법으로 설계해볼 수 있다. 이름, 나이, 생일, 직장 각 필드마다 API 따로 설계 이름만 변경하는 경우 이름 API만 호출해도 됨 모든 값을 변경하는 경우 API 4개 호출하는 상황 발생 이름, 나이, 생일, 직장 한 번에 변경되는 API 설계 이름만 변경하는 경우 나이, 생일, 직장을 null 체크 해주거나 나이, 생일, 직장에 대한 정보도 함께 받아야 .. 2022. 1. 25.
반응형