728x90 분류 전체보기126 [스프링 AOP] 2. 스프링 AOP 프록시 생성 원리 이전 글에서 스프링 AOP의 정의와 기본 개념이 되는 Proxy에 대해서 알아보았다. 이제는 스프링에서 Proxy를 어떻게 만들어주고 있는지 알아보자. Weavingweaving이란 우리가 모듈화한 부가 기능을 타켓에 적용해 핵심 기능과 연결하는 과정을 뜻한다. weaving은 크게 3가지로 나눌 수 있다.컴파일 타임 위빙.java 코드를 컴파일러를 사용해서 .class을 만드는 시점에 부가 기능을 추가하는 것을 말한다.컴파일 과정에 부가 기능을 끼워넣기 때문에 특별한 컴파일러가 필요하다..class파일을 다시 디컴파일 해보면 애스팩트 관련 호출 코드가 들어간다.클래스 로드 타임 위빙자바언어는 .class파일을 JVM내에 클래스 로더에 보관하는데 이 때 부가 기능을 넣기 위해 .class파일의 바이트 코.. 2024. 10. 2. [스프링 AOP] 1. 스프링 AOP와 Proxy 패턴 개요최근 스프링 공식 문서를 시작하여 내부 코드부터 구현 원리까지 학습은 매우 많이 했는데 정리는 하지 못한 것 같아 이번 글부터 Aop를 시작으로 스프링에 대해 완벽 정리를 해보고자 한다. 스프링 AOP란?스프링 AOP(Aspect-Oriented Programming, 관점 지향 프로그래밍)은 스프링 프레임워크에서 지원하는 프로그래밍 패러다임 중 하나로, 주된 기능은 애플리케이션의 핵심 비즈니스 로직과 공통적인 부가 기능(예: 로깅, 트랜잭션 관리, 보안 등)을 분리하는 것을 말한다. 예를 들어, 한 상품 판매자가 상품을 등록 하는 기능을 만들어야 한다고 가정해보자.여기서 핵심 비즈니스 로직은 아래와 같을 것이다.상품의 이름은 10자를 넘어서면 안된다.상품의 이미지는 5개를 넘어서면 안된다.상품을 .. 2024. 9. 28. 2023년 회고와 2024년 계획 이번에는 처음으로 이번년도 회고를 작성해보고자 한다. 이렇게 많은 일이 있을 수 있었을까? 싶은 2023년도 였던 것 같은데 하나하나 잘 정리해봐야지. 개인 공부와 성장 사실 백엔드 공부를 제대로 시작했던 것이 2023년도 초반 겨울방학이었던 것 같다. 이전까지는 ‘그냥 저냥 스프링을 써봤다’ 정도였는데 이 때 쯤부터(정확히는 겨울방학 부터) 그나마 제대로 공부를 시작했던 것 같다. 2023년도에 공부한 책을 정리해보면 다음과 같다. 자바 웹 넥스트 스텝 개발자가 알아야할 객체지향과 디자인 패턴 SQL 레벨업 단위 테스트 가상 면접 사례로 배우는 대규모 시스템 설계 모던 자바 인 액션 코틀린 인 액션 발췌독 JPA 프로그래밍 (자바 ORM 표준) 김영한님 강의와 함께 Real Mysql (엄청난) 발췌독.. 2024. 1. 4. Refactoring : if-else문을 사용하는 팩토리 클래스 제거하기 개발을 하다보면 VIP 유저, 일반 유저 등의 여러 상황과 정책에 대응하기 위해 하나의 인터페이스가 여러 구현체를 갖게되는 경우가 더러 있다. 위와 같은 경우 특정 상황에서 특정 구현체를 찾아주어야 하는 팩토리 클래스를 만들어야 하는데, 이 팩토리 클래스에 If-else문 혹은 switch, when 등을 사용하기 쉽상이다. 이때, 어떻게 대응해야할지 고민과 그 결과를 공유해보고자한다.if-else를 사용한 팩토리 클래스VVIP 유저, VIP 유저, GOLD, SILVER 유저마다 다르게 할인율을 계산해주는 정책이 있었다고 가정해보자. 보통의 상황에서 우리는 UserSalePolicy라는 인터페이스를 정의하고 각 유저에 맞는 정책들을 구현할 것이다.interface UserSalePolicy { fun .. 2023. 12. 26. 이전 1 2 3 4 5 ··· 32 다음 728x90