AOP

Spring/개념

[Spring] CGLIB

CGLIB CGLIB(Code Generator Library): 코드 생성 라이브러리로서 런타임에 동적으로 자바 클래스의 프록시를 생성해주는 기능을 제공한다. 인터페이스가 아닌 클래스에 대해서 동적 프록시를 생성할 수 있다. CGLIB는 Spring AOP를 공부하면서 들었던 개념이었다. Spirng에서 AOP를 적용할 때 런타임시 프록시를 생성한다. 이때 인터페이스 기반은 JDK Dynamic Proxy로 클래스 기반은 CGLIB를 사용한다. Spring Boot에서는 CGLIB를 사용하고 있다. CGLIB는 타겟에 대한 정보를 직접적으로 제공 받아 바이트 코드를 조작하여 프록시를 생성한다. 때문에 리플렉션을 사용하는 JDK Dynamic Proxy에 비해 성능이 좋다. 또한 CGLIB는 메소드가 처..

Spring/개념

[Spring] Filter, Interceptor, AOP의 차이점에 대해

AOP를 공부하게 되면 뒤따로오는 개념인 필터와 인터셉터. 인터셉터를 오늘 처음으로 어떤 것인지에 대해 공부하게 됐는데, AOP와 비슷하다 생각했다. 그래서 AOP와 인터셉터의 차이점에 대해 블로깅하면서 필터도 함께 알아볼 생각이다. 공통 기능 구현의 분리 웹 개발을 하다 보면 로그인 관련(세션처리), 로깅, 트랜잭션, 권한체크 등 공통 로직으로 처리해야 되는 업무가 생긴다. 이러한 기능을 반복해서 작성해야 한다면, 중복된 코드가 많아지게 되고, 유지보수가 힘들어지며 소스관리가 되지 않는다. 때문에 공통 기능은 핵심 기능과 분리하여 관리해야 한다! 그럼 어떻게 공통 기능을 관리해야 할까? 메소드 호출 앞, 중간, 뒤에 추가하여 공통 로직을 처리할 수 있는 방법이 3가지가 있다. Filter(필터) - 핸..

Spring/개념

[Spring] 스프링(Spring Framework)의 정의와 특징

💡Spring Framework: 자바 엔터프라이즈 애플리케이션 개발에 사용되는 오픈소스 경량급 애플리케이션 프레임워크이다. 흔히 스프링이라고 부른다. 스프링이란? 애플리케이션의 기본 틀! 스프링 컨테이너 스프링은 스프링 컨테이너 또는 애플레이케이션 컨텍스트라고 불리는 스프링 런타임 엔진을 제공한다. 설정정보를 참고해서 애플리케이션을 구성하는 오브젝트를 생성하고 관리한다. 보통 웹 모듈에서 동작하는 서비스나 서블릿으로 등록해서 사용한다. 공통 프로그래밍 모델 - Ioc/DI, PSA, AOP 프레임워크는 애플리케이션을 구성하는 오브젝트가 생성되고 동작하는 방식에 대한 틀을 제공해줄 뿐만 아니라, 어떻게 작성돼야 하는지에 대한 기준도 제시해준다. 이런 틀을 보통 프로그래밍 모델이라고 한다. 스프링은 IoC..

Spring/스프링5 프로그래밍 입문

Chapter7. AOP 프로그래밍

뒤에서 설명할 트랜잭션의 처리 방식을 이해하려면 AOP(Aspect Oriented Programming)를 알아야 한다. 프로젝트 준비 aspectjweaver 의존 추가 build.gradle에 추가 implementation group: 'org.aspectj', name: 'aspectjweaver', version: '1.8.13' 스프링의 AOP 기능은 spring—aop 모듈이 제공하는데 spring—context 모듈을 의존 대상에 추가하면 spring-aop 모듈도 함께 의존 대상에 포함된다. 따라서 spring—aop 모듈에 대한 의존을 따로 추가하지 않아도 된다. aspectjweaver 모듈은 AOP를 설정하는데 필요한 애노테이션을 제공하므로 이 의존을 추가해야 한다. 프록시와 AO..

지구우중
'AOP' 태그의 글 목록