글을 쓰게 된 이유 : 서비스단에 메서드를 하나 추가했는데 알고보니 AOP 포인트컷 패턴에 안맞아 트랜잭션 처리가 안되는걸 알았다. 그래서 AOP 포인트컷에 대해 작성해보겠다! ✅ AOP 포인트컷 패턴이란?Pointcut Expression Pattern은 **Advice를 어디에 적용할지 정하는 조건식(패턴)**이다.Spring AOP에서 가장 많이 쓰이는 패턴은 execution()이다. 현재 클래스는 com.aaa.bbb.service.smsService로 되어있었는데 AOP에서 설정한 포인트컷 패턴은execution(* cohttp://m.aaa.bbb.*.service..impl.*Impl.*(..)) 즉, Impl로 끝나는 클래스의 모든 메서드만 대상으로 하고 있었다.즉, smsService는..
우선 이걸 작성하는 이유는 실무에서 upstream.conf 를 수정해야하는 상황이 생겼다. 기존에는 클라이언트가 port 1111로 요청하면 인증서버(9999)로 전달 되었는데, 이걸 계약서버(2222)로 전달 되도록 upstream.conf를 수정해야 한다. upstream.conf 가 무엇인지 먼저 정리해보겠다.Nginx 설정에서 백엔드 서버 그룹을 정의하는 사용자 정의 설정 파일이다. * 백엔드 서버 그룹(upstream 블록)은, 클라이언트 요청을 처리할 여러 서버를 정의하는 공간이고, Nginx에서 여러 개의 백엔드 서버를 묶어서 하나처럼 다루는 논리적 그룹이다. 이 서버들은 흔히 백엔드 서버라고 불리며, Nginx는 여기에 요청을 분산 한다. Nginx = 안내 데스크upstream 블록 ..
모든 개발자를 위한 HTTP 웹 기본 지식을 보고 정리한 내용입니다. IP(인터넷 프로토콜) - port란 개념이 없다. - 데이터를 보내는 주소 TCP(전송 제어 프로토콜) - 연결지향(3way handshake 가상연결) SYN(접속요청),SYN+ACK,ACK(요청수락),데이터전송 - 데이터 전달 보증 1.데이터전송 2.데이터 잘 받았음 - 순서 보장 - 신뢰 할 수 있는 프로토콜 * 쉽게 예시를 들자면, IP는 아파트, PORT는 몇동 몇호 - 현재는 대부분 TCP 사용 - PORT추가(같은 IP 내에서 프로세스 구분) UDP(사용자 데이터그램 프로토콜) - IP와 거의 같고, PORT와 체크섬만 추가 - 단순하고 빠르다. QUIC(Quick UDP Internet Connections) - 현재 ..
** 김영한님의 인강을 듣고 정리했습니다. 👉스프링자바 언어 기반의 프레임워크자바 언어의 가장 큰 특징(객체지향언어)스프링은 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크👉객체지향추상화캡슐화다형성상속👉좋은 객체 지향 설계의 5가지 원칙(SOLID): 객체 지향 프로그래밍(OOP)에서 유지보수성과 확장성을 높이기 위한 5가지 설계 원칙SRP : 단일 책임 원칙(클래스는 하나의 책임만 가져야 한다)OCP : 개방-폐쇄 원칙(기존 코드 수정 없이 새로운 기능을 추가할 수 있어야 한다.)LSP : 리스코프 치환 원칙(자식 클래스는 부모 클래스를 대체할 수 있어야 한다.)ISP : 인터페이스 분리 원칙(클라이언트가 사용하지 ..
** 김영한님의 스프링입문 강의를 보고 정리했습니다. 빌드란 소스코드를 실행 가능한 프로그램(바이너리)로 변환하는 과정이다.빌드 자동화 도구가 gradle, maven 등이 있다.대부분 API는 객체를 JSON으로 변환하여 반환한다.현재 내가 맡고 있는 서비스에서는 스프링을 사용, maven을 사용해서 빌드는 pom.xml에 넣어져있다.@Component` 를 포함하는 다음 애노테이션도 스프링 빈으로 자동 등록된다.@controller @service @repository
🔎 영속성 컨텍스트? 영속성 컨텍스트란 엔티티를 영구 저장하는 환경이다. 애플리케이션과 데이터베이스 사이에서 객체를 보관하는 가상의 데이터베이스 같은 역할을 한다. 엔티티 매니저를 통해 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 인티티를 보관하고 관리한다. em.persist(member); 영속성 컨텍스트의 특징 엔티티 매니저를 생성할 때 하나 만들어진다. 엔티티 매니저를 통해서 영속성 컨텍스트에 접근하고 관리할 수 있다. 🔎 엔티티의 생명주기 비영속 : 영속성 컨텍스트와 전혀 관계가 없는 상태 영속 : 영속성 컨텍스트에 저장된 상태 준영속 : 영속성 컨텍스트에 저장되었다가 분리된 상태 삭제 : 삭제된 상태 비영속 엔티티 객체를 생성했지만 아직 영속성 컨텍스트에 저장하지 않은 상태를..
📌MyBatis JDBC를 좀 더 편하게 사용할 수 있도록 객체를 SQL이나 저장 프록시저와 매핑해주는 Persistence Framework, 한 마디로 SQL Mapper 장점 다른 프레임워크들에 비해 간단하다. 소스 코드와 SQL의 분리 SQL을 직접 다룰 수 있다. 📌JPA 자바 진영의 ORM 기술 표준 명세(실제 구현체 : Hibernate, EclipseLink 등) JPA를 사용해야 하는 이유 1. 생산성 : JPA를 사용하면 지루하고 반복적인 CRUD용 SQL을 개발자가 직접 작성하지 않아도 된다. Spring Data JPA를 사용하면 interface 선언만으로도 쿼리 구현이 가능해서 관리도구 등에서 가볍게 사용할 수 있는 CRUD 쿼리를 손쉽게 대처할 수 있다. 2. 유지보수 : 컬럼..