스프링 4

[SpringBoot] 관점 지향 프로그래밍 AOP의 개념과 사용법

🐣 AOP란? AOP(Aspect Oriented Programming)는 관점 지향 프로그래밍이라는 의미이다. 이때 말하는 관점은 아래와 같이 두 분류로 나눌 수 있다. 1. 여러 메서드에 공통으로 사용하는 기능 : 주로 로깅이나 성능 측정과 같은 부가적인 로직이 이에 해당한다. 2. 특정 메소드에서만 사용하는 핵심 기능 : 어플이 제공하는 핵심 비즈니스 로직 그렇다면, "AOP를 사용했을 때 어떤 이점"이 있을까 여러 메서드에 공통적으로 사용하는 코드를 분리함으로써 코드 중복을 줄일 수 있다. 또한, 이 코드에서 수정 사항이 생기면 모든 파일을 살펴볼 필요 없이 분리된 코드만 수정하면 되기 때문에, OOP원칙에 더 맞는 코드가 된다. 또한, 비즈니스 로직에는 부가적인 코드가 섞여있지 않으므로 가독성이..

Programming/Spring 2023.03.22

[Spring] Spring Security Filter와 JWT 동작 과정

JWT란? Json Web Token의 약자로, 토큰을 통해 접근 권한을 확인 할 수 있기 때문에 디지털 서명이라고 볼 수 있다. 이전에는 서버의 session에 로그인한 회원을 저장하고, client에서 session id를 쿠키로 가지고 있어야 했다. 이 방식은 서버 프로그램이 여러 개일 때, 일관성을 유지하기 힘들다는 문제점이 있다. 따라서 따로 어디 저장할 필요 없이 로그인했다는 것을 확인할 수 있는 JWT가 탄생했다. JWT의 구조 1. Header : Signature를 암호화한 알고리즘 정보 & 토큰 타입 정보 2. Payload : Claim 1) 등록된 Claim(필수X) : iss(발행자), exp(만료 시간), sub(제목), aud(청중) 등이 있다. 2) 개인 Claim 정보를 공..

Programming/Spring 2023.02.20

Spring 기타(1) - 객체 간 결합도가 낮은 이유

Spring은 IoC를 통해, 객체 간의 결합도를 낮출 수 있다고 한다. 이번 글에서는 그 이유를 더 자세하게 살펴보려고 한다. 객체의 강한 결합부터 Spring에서 사용하는 약한 결합까지 차례로 작성했다. 1. 객체 간 강한 결합 클래스를 직접 호출 한계 결합된 클래스(UserServiceImpl, AdminServiceImpl)가 수정되면, HomeController도 수정해야 한다. public class HomeController{ private UserServiceImpl userService = new UserServiceImpl(); private AdminServiceImpl adminService = new AdminServiceImpl(); public void addUser(User ..

Programming/Spring 2022.04.20

Spring (2) - IoC와 Container

1. IoC(Inversion of Control)이란? 직역하면 '제어의 역행'이라는 뜻으로, 어플리케이션 코드에서 객체를 제어하지 않고 컨테이너가 제어하는 것을 말한다. 우리가 설정만 해주면, 컨테이너가 알아서 객체를 생성, 삭제, 또 의존 관계를 맺어준다는 것이다. 우리가 설정한다는 것은 "이 객체는 컨테이너 너가 관리해!"하고 알려 주는 코드를 작성하는 것을 말한다. 장점 - 객체 간의 결합도를 낮출 수 있다. (= 한 클래스를 수정해서 이와 관련된 다른 클래스도 반드시 수정해야하는 정도가 적다.) 2022.04.20 - [웹프로그래밍/Spring] - Spring 기타(1) - 객체 간 결합도가 낮은 이유 Spring 기타(1) - 객체 간 결합도가 낮은 이유 Spring은 IoC를 통해, 객체..

Programming/Spring 2022.04.20