목록AOP (5)
개발 무지렁이
📕 참고 자료 📕 𐂂 AOP (Aspect Oriented Programming)가 필요한 상황 ❓시간을 측정하는 로직을 모든 메서드에 적용하려면 시간을 측정하는 로직이 핵심 관심사항(CORE CONCERN)은 아니지만 모든 메서드에 들어가야 할 공통 관심사항(CROSS-CUTTING CONCERN)이다. 공통 관심사항을 모아놓고 원하는 곳에 적용할 때, AOP가 필요하다. 🗝️ 원하는 적용대상(target)을 지정할 수 있다. 🗝️ 보통 패키지 레벨로 target을 설정한다. 📜 TimeTraceAop.java @Aspect @Component //Spring Bean으로 등록된다. public class TimeTraceAop { @Around("execution(* hello.hellospring...
🌱 Spring의 설계 철학 : 개발자가 Spring Framework에 종속되지 않고 POJO 객체를 사용하여 애플리케이션을 개발할 수 있게 하는 것 🍩 POJO를 이용한 가볍고, 비침투적인 개발 🍩 DI와 인터페이스 지향을 통한 느슨한 결합도 (다른 구현체로 교체하기 쉽다.) 🍩 Aspect와 공통규약을 통한 선언적 프로그래밍 🍩 Aspect와 템플릿을 통한 상투적인 코드 축소 ❓선언적 프로그래밍 : 무엇을 달성해야 하는지에 대해 명시적 설명 어떻게 달성하는지에 대한 세부사항은 숨겨져 있다. 𐂂 POJO (Plain-Old Java Object) 특별한 제약이나 규칙을 따르지 않는 평범한 자바객체를 가리킨다. Spring Framework는 Spring에 특화된 클래스를 요구하지 않으며, 기본은 PO..
𐁍 프록시(Proxy) 다른 객체에 대한 인터페이스를 제공하는 객체 해당 객체의 대리자 역할을 수행 🍩 보안제어 : 프록시는 실제 객체에 대한 접근을 제어할 수 있다. 클라이언트는 프록시를 통해 접근하며, 프록시는 요청을 허용/거부한다. 🍩 로깅 및 감시 : 프록시를 사용하여 메서드 호출을 로깅하거나 감시 🍩 지연로딩(Lazy Loading) : 필요할 때만 데이터를 로드하는 작업 수행, 성능최적화 🍩 캐싱 : 프록시를 사용하여 이전에 수행한 작업의 결과를 캐시하고, 동일한 요청에 대해 캐시된 결과를 반환 🍩 원격프록시(Remote Proxy) : 원격 서버나 다른 머신에 있는 객체에 대한 접근을 지원하는 프록시 생성 🍩 Dynamic Proxy / Static Proxy : 런타임에 프록시 객체를 동적..
📌.트랜잭션(Transaction)이란? : 데이터의 조작이 일어나는 여러 작업 프로세스를 하나의 단위로 묶어 일관성있게 commit or rollback할 수 있게 하는 것을 말한다. 원자성 부여. (하나의 작업이라도 실패하면 모두 실패) ex. 💰 결제와 동시에 좌석할당 결제를 수행 + 결제내역 저장 + 구매내역 저장 Spring Framework Transaction 📌. Transaction 동작원리 Caller -> AOP Proxy -> Transaction Advisor(transaction 생성) -> Custom Advisor(s) -> Target Method -> Custom Advisor(s) -> Transaction Advisor(commit or rollback) -> AOP ..
AOP(Aspect Oriented Programming) 공통로직을 횡단으로 빼서 별도의 모듈(라이브러리 덩어리)로 만들어 놓고, 호출해서 사용 (관점을 핵심기능과 공통기능으로 분리) (관심사항을 등록해놓으면, 타겟대상을 찾아서 사전 / 사후처리, Filter와 같은 역할) WHY? 요구사항 변경에 소스코드 변경을 최소화 🧩범용성 코딩 Style, 🧩직관성 Advice 객체 공통의 기능을 모아둔 객체 🚀. AOP 적용시기 Around: 사전, 사후 Before: 사전 After: 사후 (예외여부 상관없이) After-returning: 사후 (정상동작시) After-throwing: 사후 (예외발생시) ⭐. AspectJ (어노테이션 이용) @Around @Before @After @After-retu..