minwoorich / 2024-spring-jpa-study

4 stars 5 forks source link

스프링에서 AOP가 활용되는 대표적인 예가 무엇이 있을까요? #20

Open pickylemon opened 5 months ago

pickylemon commented 5 months ago

스프링에서 AOP가 활용되는 대표적인 예가 무엇이 있을까요?

minwoorich commented 5 months ago

헉 잘모르겠습니다 ㅠㅜ 알려주실분 ㅠㅜㅠㅜㅠㅜ

InitTester commented 5 months ago

트..트랜잭션!

junani0v0 commented 5 months ago

ㄷㄷㄷㄷ

PyoungMinho commented 4 months ago

로깅, 트랜젝션, 예외처리, 캐싱

mulgoms2 commented 4 months ago

AOP가 갖는 최고의 장점이 무엇일까요?

PyoungMinho commented 4 months ago

AOP가 갖는 최고의 장점이 무엇일까요? 제 생각에 관심사 분리를 통해서 중복 코드가 줄어들고 그래서 유지보수에 용이하다 (재사용성도 좋다) 라고 생각합니다.

minwoorich commented 4 months ago
  1. 프로젝트에 적용하면 있어보인다.
  2. 기존의 객체 지향적인 프로그래밍으로 해결하기 어려운 부가기능과 핵심기능의 분리를 좀 더 세련되게 도와준다. (리플렉션 기술 활용)

AOP 의 구현방법으로는 다양한 방식들이 있는데 스프링에서는 프록시 객체를 활용하여 풀어낸다.

mulgoms2 commented 4 months ago

저는 데코레이터 패턴의 장점이 곧 aop 의 장점이 된다고 생각합니다. aop를 사용하면 기존 코드를 수정하지 않고 새로운 기능을 추가할 수 있습니다. aop를 통해 관심사가 분리되는 장점도 있지만 - 이를 통해 단일책임 원칙을 지킬 수 있음 - 기존의 코드를 전혀 변경하지 않고 로깅같은 새로운 기능을 덧붙일 수 있다(ocp) 는 것도 aop의 큰 장점이라고 생각합니다.

또한 aop를 활용하면 우리가 변경할 수 없는 원본 소스코드 - 외부 라이브러리의 코드들 - 의 동작에도 새로운 기능을 추가하는 것이 가능해집니다.

pickylemon commented 4 months ago

데코레이터 패턴과 프록시 패턴이 헷갈려서 질문드립니다! 둘을 어떻게 구분하면 좋을까요? 스프링 AOP는 데코레이터 패턴으로 보는게 맞을까요?

minwoorich commented 4 months ago

제가 생각했을땐 둘다 적용되었다고 보는게 맞는것 같아요.

데코레이터는 기능을 추가 하는것에 촛점이 맞춰져있고 프록시패턴은 원본에 접근 하기전에 먼저 프록시를 통해 무언가를 해라! 라는 접근 제어 의 의도로 사용을 하는데

AOP는 이 두 가지 특성을 다 활용 하기 때문에 그냥 데코레이터 패턴과 프록시패턴이 둘 다 적용된 프로그래밍 기법(?) 으로 정리 할 수 있지않을까 싶습니다