
🛠 빈 후처리기 (BeanPostProcessor)란?빈(Bean) 후처리기(BeanPostProcessor)는 Spring 컨테이너가 빈을 생성한 후에 추가적인 작업을 수행할 수 있도록 해주는 인터페이스입니다.Spring Bean의 라이프사이클에서 초기화 전후에 개입하여 특정 로직을 실행할 수 있습니다. 스프링이 빈 저장소에 등록할 목적으로 생성한 객체를 빈 저장소에 등록하기 직전에 조작하고 싶다면 빈 후처리기를 사용하면 된다. 빈 포스트 프로세서(BeanPostProcessor)를 번역하면 빈 후처리기인데, 이름 그대로 빈을 생성한 후에 무언가를 처리하는 용도로 사용한다. 빈 후처리기는 객체를 조작할 수도 있고, 완전히 다른 객체로 바꿔치기 하는 것도 가능하다. 1. 생성 : 스프링 빈 대상..
조인 포인트 (Join point)어드바이스가 적용될 수 있는 위치, 메소드 실행, 생성자 호출, 필드 값 접근, static 메서드 접근 같은 프로그램 실행 중 지점조인 포인트는 추상적인 개념, AOP를 적용할 수 있는 모든 지점이라 생각하면 된다.스프링 AOP는 프록시 방식을 사용하므로 조인 포인트는 항상 메소드 실행 지점으로 제한된다.포인트컷 (Pointcut)조인 포인트 중에서 어드바이스가 적용될 위치를 선별하는 기능주로 AspectJ 표현식을 사용해서 지정프록시를 사용하는 스프링 AOP는 메서드 실행 지점만 포인트컷으로 선별 가능타켓(Target)어드바이스를 받는 객체, 포인트컷으로 결정 어드바이스(Advice)부가 기능특정 조인 포인트에서 Aspect에 의해 취해지는 조치Around(주변), ..

애플리케이션 로직은 크게 핵심기능과 부가기능으로 나눌 수 있다. 핵심기능 : 해당 객체가 제공하는 고유의 기능. 부가기능 : 핵심 기능을 보조하기 위해 제공되는 기능. ex) 로그 추적 로직, 트랜잭션 기능 주문 로직을 실행하기 직전에 로그 추적 기능을 사용해야 하면, 핵심 기능인 주문 로직과 부가 기능인 로그 추적 로직이 하나의 객체 안에 섞여 들어가게 된다. 부가 기능이 필요한 경우 이렇게 둘을 합해서 하나의 로직을 완성한다. 여러 곳에서 공통으로 사용하는 부가 기능보통 부가 기능은 여러 클래스에 걸쳐서 함께 사용된다. 예를 들어서 모든 애플리케이션 호출을 로깅 해야 하는 요구 사항을 생각해보자. 이러한 부가 기능을 횡단 관심사 (cross-cutting concerns)가 된다. 쉽게 이야기해..

목표 스프링 시큐리티 6 프레임워크를 사용하여 JWT (JSON WEB TOKEN) 기반의 인증/인가 구현 및 회원 정보 저장서버는 API 서버 형태로 구축 회원가입 : 내부 회원 가입 로직은 세션 방식과 JWT 방식의 차이는 없다.Postman을 통해 /join으로 DTO를 넘기고, 컨트롤러에서 받아 서비스 로직을 거쳐 디비에 저장한다. 로그인 (인증) : 로그인 요청을 받는 후 세션 방식은 서버 세션이 유저 정보를 저장하지만 JWT 방식은 토큰을 생성하여 응답한다. 경로 접근 (인가) : JWT Filter를 통해 요청의 헤더에서 JWT를 찾아 검증을 하고 일시적 요청에 대한 Session을 생선한다. (생선된 세션은 요청이 끝나면 소멸됨) 버전Spring Boot 3.2.1Security 6...

데이터베이스 커넥션을 흭득할 때는 다음과 같은 과정을 거친다.1. 애플리케이션 로직은 DB 드라이버를 통해 커넥션을 조회한다.2. DB 드라이버는 DB와 TCP/IP 커넥션을 연결한다. 물론 이 과정에서 3 way handshake 같은 TCP/IP 연결을 위한 네트워크 동작이 발생한다.3. DB 드라이버는 TCP/IP 커넥션이 연결되면 ID,PW 와 기타 부가정보를 DB에 전달한다.4. DB는 ID, PW를 통해 내부 인증을 완료하고, 내부에 DB 세션을 생성한다.5. DB는 커넥션 생성이 완료되었다는 응답을 보낸다.6. DB 드라이버는 커넥션 객체를 생성해서 클라이언트에 반환한다. 이렇게 커넥션을 새로 만드는 것은 과정도 복잡하고 시간도 많이 소모되는 일이다.DB는 물론이고 애플리케이션 서버에서도 ..

애플리케이션을 개발할 때 중요한 데이터는 대부분 데이터베이스에 보관한다.1. 커넥션 연결 : 주로 TCP/IP를 사용해서 커넥션을 연결한다.2. SQL 전달 : 애플리케이션 서버는 DB가 이해할 수 있는 SQL을 연결된 커넥션을 통해 DB에 전달한다.3. 결과 응답 : DB는 전달된 SQL을 수행하고 그 결과를 응답한다. 애플리케이션 서버는 응답 결과를 활용한다. 문제는 각각의 데이터베이스마다 커넥션을 연결하는 방법, SQL을 전달하는 방법, 그리고 결과를 응답 받는 방버이 모두 다르다는 점이다. 여기에는 2가지 큰 문제가 있다. 1. 데이터베이스를 다른 종류의 데이터베이스로 변경하면 애플리케이션 서버에 개발된 데이터베이스 사용 코드도 함께 변경해야한다.2. 개발자가 각각의 데이터베이스마다 커넥션 연결,..