카테고리 없음

AOP, PSA [Spring Framework의 특징?]

min민 2023. 3. 10.

 

 

 

 

현재 포스팅은

https://mininkorea.tistory.com/42

 

Spring Framework 기본 [스프링 제대로 알아가기] DAY1

현재 스프링의을 정확히 이해하기 위해서 10일동안 복습을 진행하려고한다. DAY 1: Spring의 기본 ~ DI,AOP 핵심개념 짚어가기 [Spring Mvc ↓] DAY2 : API, 서비스, 예외처리 DAY3 : JDBC DAY4 : JPA DAY5 : 트랜젝션

mininkorea.tistory.com

 

위 게시글의 뒷부분을 이어갑니다.

 

 

 

 

 

 

 

 

AOP란? (Aspect Oriented Programming)

AOP는 애플리케이션의 핵심 업무 로직에서 로깅이나 보안, 트랜잭션 같은 공통 기능 로직들을 분리하는 것으로 이해하면 된다.

 

 

AOP가 필요한 이유?

공통 기능을 분리하는 이유는 아래 세 가지로 정리할 수 있다.

 

* 코드의 간결성 유지

* 객체 지향 설계 원칙에 맞는 코드 구현

* 코드의 재사용

 

핵심 로직에 공통적인 기능의 코드가 있다면, 코드 구성이 복잡해지고 버그 발생 확률이 높아져 유지보수 비용이 높아지게 된다. 

 

Spring에서는 @Transactional 애노테이션을 붙이면 Spring 내부에서 이 애노테이션 정보를 활용해서 AOP기능을 통해 트렌잭션을 적용한다.

 

point

* AOP를 활용하면 애플리케이션에 전반에 걸쳐 적용되는 공통 기능(트랜잭션, 로깅, 보안, 트레이싱, 모니터링) 등을 비즈니스 로직에서 깔끔하게 분리하여 재사용 가능한 모듈로 사용할 수 있다.

* AOP(Aspect Oriented Programming)는 관심 지향 프로그래밍이다.

* AOP에서 의미하는 Aspect는 애플리케이션의 공통 관심사를 의미한다.

* 애플리케이션의 공통 관심사는 비즈니스 로직을 제외한 애플리케이션 전반에 걸쳐서 사용되는 공통 기능들을 의미한다.

* 애플리케이션 전반에 걸쳐서 사용되는 공통 기능에는 로깅, 보안, 트랜잭션, 모니터링, 트레이싱 등의 기능이 있다.

* AOP를 애플리케이션에 적용해서 다음과 같은 이점을 누릴 수 있다.

 코드의 간결성 유지

 객체 지향 설계 원칙에 맞는 코드 구현

 코드의 재사용

 

 

 

 

 

 

 

PSA(Portable Service Abstraction) 란?

 

애플리케이션에서 특정 서비스를 이용할 때, 서비스의 기능을 접근하는 방식 자체를 일관되게 유지하면서 기술 자체를 유연하게 사용할 수 있도록 하는 것을 PSA(일관된 서비스 추상화)라고 한다.

 

 

 

PSA가 필요한 이유;

어떤 서비스를 이용하기 위한 접근 방식을 일관된 방식으로 유지함으로써 애플리케이션에서 사용하는 기술이 변경되더라도 최소한의 변경만으로 변경된 요구 사항을 반영하기 위함이다.

 

 

즉, 애플리케이션의 요구 사항 변경에 유연하게 대처하기 위함임.

 

 

point

* 객체지향 프로그래밍 세계에서 어떤 클래스의 본질적인 특성만을 추출해서 일반화 하는것을 추상화(Abstraction)라고 한다.

* 클라이언트가 추상화 된 상위 클래스를 일관되게 바라보며 하위 클래스의 기능을 사용하는 것이 바로 일관된 서비스 추상화(PSA)의 기본 개념이다.

* 애플리케이션에서 특정 서비스를 이용할 때, 서비스의 기능을 접근하는 방식 자체를 일관되게 유지하면서 기술 자체를 유연하게 사용할 수 있도록 하는 것을 PSA(일관된 서비스 추상화)라고 한다.

* PSA가 필요한 주된 이유는 어떤 서비스를 이용하기 위한 접근 방식을 일관된 방식으로 유지함으로써 애플리케이션에서 사용하는 기술이 변경되더라도 최소한의 변경만으로 변경된 요구 사항을 반영하기 위함이다.

 

 

 

 

DAY1 남은내용: Spring Boot / DI, AOP 재정리. [코드 작성해가며] ↓

 

 

다음주제 : Spring Boot

https://mininkorea.tistory.com/45

 

Spring Boot 이란? [Spring Boot은 왜써?]

https://spring.io Spring | Home Cloud Your code, any cloud—we’ve got you covered. Connect and scale your services, whatever your platform. spring.io Spring Boot 이란? Spring Boot은 Spring Framework의 편리함에도 불구하고 Spring 설정의

mininkorea.tistory.com

 

 

 

 

 

* 단어정리

업캐스팅 : 업캐스팅(Upcasting)은 객체 지향 프로그래밍에서 상속 관계에 있는 클래스 간의 형 변환을 의미한다.

업캐스팅은 자식 클래스의 인스턴스를 부모 클래스 타입으로 변환하는 것을 말한다.

 

예를 들어, 자식 클래스인 Dog과 부모 클래스인 Animal이 있다고 가정해보겠습니다. Dog는 Animal을 상속받았기 때문에, Dog는 Animal이 가진 모든 멤버 변수와 메서드를 가지고 있다. 따라서, Dog 객체는 Animal 객체로 업캐스팅될 수 있습니다.

이러한 업캐스팅을 통해, 부모 클래스 타입으로 자식 클래스의 객체를 다룰 수 있게 된다. 이는 코드의 유연성을 높여주고, 다형성(polymorphism)을 구현하는 데 도움을 주게된다.

 

 

댓글