Spring
-
Spring AOP, 트랜잭션, 예외 처리Spring 2022. 3. 17. 23:16
스프링 AOP, 트랜잭션, 예외 처리 스파르타 코딩 클럽의 Spring 심화반 5주 차 내용인 스프링 AOP, 트랜잭션, 예외 처리를 정리한다. 핵심 내용 AOP의 개념 이해와 사용방법 DB 트랜잭션 이해 스프링 예외 처리방법 AOP의 개념 이해와 사용방법 AOP (Aspect Oriented Programming) AOP : 관점 지향 프로그래밍 AOP의 사용 이유 핵심 기능과 부가기능을 개발한다고 하자. 핵심 기능은 말 그대로 API가 수행해야 하는 핵심적인 기능이고, 부가기능은 부가적으로 구현해야 될 로깅, 인증과 같은 기능이다. 모든 핵심 기능에 부가기능을 추가해야 된다고 생각할 때, 핵심 기능의 수가 너무 많으면 그 핵심 기능에 하나하나 부가기능을 넣어야 하고, 이때 실수를 할 가능성과 추후에 ..
-
스프링 JPA, 페이징, 연관관계Spring 2022. 3. 17. 11:26
스프링 JPA, 페이징, 연관관계 스파르타 코딩 클럽의 Spring 심화반 4주 차 내용인 스프링 JPA, 페이징, 연관관계를 정리한다. 핵심 내용 Spring Data JPA 페이징 JPA의 연관 관계 Spring Data JPA ORM : ORM은 Object-Relation Mapping이며 말 그대로 객체(여기선 자바)와 DB(H2, MySQL)를 이어주는 기술이다. SQL의 작성 중 실수하기도 쉽고 개발자가 비즈니스 로직 개발보다 SQL 작성에 더 많은 노력을 들어야 했음 객체지향과 관계형 DB는 사용 목적 및 사용 방법이 애초에 다름 이를 해결하기 위해 ORM이 필요 JPA : JPA는 Java Persistience API로써 자바 ORM 기술에 대한 표준 명세이다. 하이버네이트 : JPA는..
-
테스트의 종류, 스프링 테스트 프레임워크Spring 2022. 3. 17. 10:52
테스트의 종류, 스프링 테스트 프레임워크 스파르타 코딩 클럽의 Spring 심화반 3주 차 내용인 테스트의 종류, 스프링 테스트 프레임워크을 정리한다. 핵심 내용 테스트의 종류 스프링 테스트 프레임워크 이해 & 사용 테스트의 종류 & 필요성 블랙박스 테스트 : 내부의 구조 및 동작 원리를 모르는 블랙박스와 같은 상태(서비스의 사용자 입장)에서 동작을 검사하는 테스트 방법 장점 : 누구나 테스트 가능 단점 : 기능이 추가될수록 테스트의 범위가 늘어나고 테스트하는 사람이 늘어나야 한다. 개발자 테스트 : 개발자가 작성한 코드를 검증해 주는 테스트 코드를 직접 작성하는 방법 장점 : 빠르고 정확한 테스트, 자동화 가능, 기존 코드가 잘 동작하는지 확인할 수 있음, 배포 시에 항상 검증이 가능하다. 단점 : 개..
-
인증, 인가, 쿠키, 세션, OAuth2Spring 2022. 3. 16. 23:41
인증, 인가, 쿠키, 세션, OAuth2 스파르타 코딩 클럽의 Spring 심화반 2주 차 내용인 인증, 인가, 쿠키, 세션, OAuth2을 정리한다. 핵심 내용 웹에서의 인증 & 인가, 쿠키 & 세션 Spring Security를 이용한 인증 및 인가 OAuth2를 이용한 소셜 로그인 인증 vs 인가 인증 (Authentication) 사용자의 신원을 확인하는 행위 로그인을 통해(주로 아이디와 패스워드로) 본인임을 확인하는 것 인가 (Authorization) 사용자의 권한을 확인하는 행위 역할(Admin, User ...)에 따른 사용 권한 관리 쿠키와 세션 HTTP는 상태를 저장하지 않음(Stateless) 쿠키와 세션은 모두 HTTP에 상태 정보를 유지(Stateful) 하기 위해 사용됨. 쿠키 ..
-
Spring의 DI, IoC 컨테이너, 스프링 계층구조Spring 2022. 3. 16. 23:38
DI, IoC 컨테이너, 스프링 계층구조 스파르타 코딩 클럽의 Spring 심화반 1주 차 내용인 DI, IoC 컨테이너, 스프링 계층구조을 정리한다. 핵심 내용 스프링의 핵심 개념인 DI와 스프링 IoC 컨테이너의 개념 스프링의 Controller, Service, Repository의 필요성 DI, IoC 중복 코드와 강한 결합을 해결하기 위한 두 가지 방법 DI (의존성 주입) 객체가 필요한 상태에서는 보통 객체를 직접 생성한다. 이때, 객체를 직접 생성하지 않고 이미 생성되어 있는 객체를 가져오는 작업을 의존성 주입(DI: Dependency Injection)라고 부른다. IOC (제어의 역전) 의존성 주입에서는 사용자가 필요한 객체를 직접 생성하지 않고, 이미 생성되어 있는 객체를 가져왔다. ..
-
@ControllerAdvice를 이용한 예외 처리Spring 2022. 3. 16. 18:34
@ControllerAdvice를 이용한 예외 처리 Custom 한 Exception class를 만들어서 @ControllerAdvice과 함께 예외 처리를 해보자. CustomValidationException Validation 예외 처리를 해줄 클래스를 다음과 같이 만든다. public class CustomValidationException extends RuntimeException{ public CustomValidationException() { super(); } public CustomValidationException(String message) { super(message); } public CustomValidationException(String message, Throwable..
-
Spring에서 profile로 환경별 설정 적용(yml 파일)Spring 2022. 3. 15. 20:50
profile로 환경별 설정 적용 yml 파일에 profile로 local, dev 환경별 설정을 따로 적용해보자. applicatio.yml #... server: port: 5000 servlet: context-path: / encoding: charset: UTF-8 enabled: true force: true spring: profiles: # profiles 설정 active: local # 다른 설정이 없을 때 default 환경 값 devtools: livereload: enabled: true jpa: hibernate: naming: physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl..
-
Spring 프로젝트에 Swagger2 적용Spring 2022. 3. 15. 20:40
Swagger2 적용 API 문서 자동화를 해주는 Swagger2를 스프링 프로젝트에 적용해보자. 의존성 추가 gradle을 이용한다면 build.gradle에 다음과 같은 의존성을 추가해 준다. compile group: 'io.springfox', name: 'springfox-swagger2', version: '2.9.2' compile group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.9.2' Swagger2Config Config 패키지를 만들고 다음과 같은 Config 클래스를 만들어준다. import org.springframework.context.annotation.Bean; import org.springframewor..