본문 바로가기

개발일지/스프링10

Spring에 AOP를 적용하고 Prometheus로 수집하기 Spring AOP(Aspect-Oriented Programming)란?Spring 프레임워크에서 제공하는 관점 지향 프로그래밍을 지원하는 기능이다. 이는 애플리케이션의 핵심 비즈니스 로직과 공통 관심사(예: 로깅, 트랜잭션 관리, 보안 등)를 분리하여 코드의 모듈성과 재사용성을 높이는 데 목적이 있다. Spring에 AOP 적용하기application.yml에 의존성 추가Spring AOP (Aspect Oriented Programming) 기능을 쓰기 위해 필요한 기본 세팅을 한 번에 해주는 starter 의존성이다.implementation 'org.springframework.boot:spring-boot-starter-aop' prometheus 의존성 추가하기micrometer라는 메트릭.. 2025. 4. 16.
@Builder 상속하기 Item 클래스를 상속받은 Book 클래스가 있다 Book 클래스에서 Builder를 사용하면 Book 클래스에 있는 값을 builder로 정의할 수 있는데 상속할 Item 클래스는 추가적인 작업이 필요하다. 우선 Book 클래스와 Item클래스를 살펴보자 @Entity @DiscriminatorValue("B") // 싱글 테이블이기 때문에 db에 저장할 때 구분해야한다. @Getter public class Book extends Item{ private String author; private String isbn; } @Entity // 상속관계 매핑은 상속관계 전략을 지정해야한다. 이 전략을 부모클래스에 입력해야한다. @Inheritance(strategy = InheritanceType.SIN.. 2022. 8. 24.
프로젝트 실행시키는 3가지 방법 우선 하나의 서비스를 여러개 기동 시키는 방법은 3가지가 있다. 1) VM Options -> -Dserver.port=[다른포트] 2) $ mvn(./mvnw) spring-boot:run -Dspring-boot.run.jvmArguments='-Dserver.port=-9003' 랜덤포트면 $ mvn(./mvnw) spring-boot:run 만 입력하면 된다. 3) $ mvn clean compile package -> 이거 하면 jarfile이 target 폴더에 생성된다. $ java -jar -Dserver.port=9004 ./target/user-service-.0.0.1-SNAPSHOT.jar 참고로 3번은.. 인텔리j 터미널에서하면 Error: Unable to access jarfi.. 2022. 8. 17.
필터와 인터셉터 디스패처 서블릿(Dispatcher-Servlet)이란 디스패처 서블릿의 dispatch는 "보내다"라는 뜻을 가지고 있습니다. 그리고 이러한 단어를 포함하는 디스패처 서블릿은 HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러(Front Controller)라고 정의할 수 있습니다. 필터(Filter)란 필터(Filter)는 J2EE 표준 스펙 기능으로 디스패처 서블릿(Dispatcher Servlet)에 요청이 전달되기 전/후에 url 패턴에 맞는 모든 요청에 대해 부가작업을 처리할 수 있는 기능을 제공한다. 디스패처 서블릿은 스프링의 가장 앞단에 존재하는 프론트 컨트롤러이므로, 필터는 스프링 범위 밖에서 처리가 되는 것이다. 즉, 스프링 컨테이너가 .. 2022. 5. 7.
스프링 AOP란 AOP (Aspect Oriented Programming)는 관점 지향 프로그래밍이다. 관점 지향은 쉽게 말해 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것이다. 여기서 모듈화란 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것을 말한다. 예를들어 핵심적인 관점은 결국 우리가 적용하고자 하는 핵심 비즈니스 로직이 이다. 부가적인 관점은 핵심 로직을 실행하기 위해서 행해지는 데이터베이스 연결, 로깅, 파일 입출력 등을 예로 들 수 있다. AOP에서 각 관점을 기준으로 로직을 모듈화한다는 것은 코드들을 부분적으로 나누어서 모듈화하겠다는 의미다. 이때, 소스 코드상에서 다른 부분에 계속 반복해서 쓰는 코드들을 발견할 수 있는 데 이것을 **.. 2022. 5. 7.
DI(의존성 주입) 방법 의존관계 주입 의존관계 주입은 크게 4가지 방법이 있다. 생성자 주입 수정자 주입(Setter 주입) 필드 주입 일반 메서드 주입 생성자 주입 생성자를 통해서 의존 관계를 주입 받는 방법이다. 특징 생성자 호출시점에 딱 1번만 호출되는 것을 보장한다. 불변, 필수 의존관계에 사용 생성자가 딱 1개만 있으면 @Autowired를 생략해도 자동 주입 된다. 물론 스프링 빈에만 해당한다. private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; //@Autowired // 생성자가 하나이기 때문에 @Autowired 를 생략 가능하다. public OrderServiceImpl(MemberReposi.. 2022. 5. 6.