Open pickylemon opened 5 months ago
헉 잘모르겠습니다 ㅠㅜ 알려주실분 ㅠㅜㅠㅜㅠㅜ
트..트랜잭션!
ㄷㄷㄷㄷ
로깅, 트랜젝션, 예외처리, 캐싱
AOP가 갖는 최고의 장점이 무엇일까요?
AOP가 갖는 최고의 장점이 무엇일까요? 제 생각에 관심사 분리를 통해서 중복 코드가 줄어들고 그래서 유지보수에 용이하다 (재사용성도 좋다) 라고 생각합니다.
AOP 의 구현방법으로는 다양한 방식들이 있는데 스프링에서는 프록시 객체를 활용하여 풀어낸다.
저는 데코레이터 패턴의 장점이 곧 aop 의 장점이 된다고 생각합니다. aop를 사용하면 기존 코드를 수정하지 않고 새로운 기능을 추가할 수 있습니다. aop를 통해 관심사가 분리되는 장점도 있지만 - 이를 통해 단일책임 원칙을 지킬 수 있음 - 기존의 코드를 전혀 변경하지 않고 로깅같은 새로운 기능을 덧붙일 수 있다(ocp) 는 것도 aop의 큰 장점이라고 생각합니다.
또한 aop를 활용하면 우리가 변경할 수 없는 원본 소스코드 - 외부 라이브러리의 코드들 - 의 동작에도 새로운 기능을 추가하는 것이 가능해집니다.
데코레이터 패턴과 프록시 패턴이 헷갈려서 질문드립니다! 둘을 어떻게 구분하면 좋을까요? 스프링 AOP는 데코레이터 패턴으로 보는게 맞을까요?
제가 생각했을땐 둘다 적용되었다고 보는게 맞는것 같아요.
데코레이터는 기능을 추가 하는것에 촛점이 맞춰져있고 프록시패턴은 원본에 접근 하기전에 먼저 프록시를 통해 무언가를 해라! 라는 접근 제어 의 의도로 사용을 하는데
AOP는 이 두 가지 특성을 다 활용 하기 때문에 그냥 데코레이터 패턴과 프록시패턴이 둘 다 적용된 프로그래밍 기법(?) 으로 정리 할 수 있지않을까 싶습니다
스프링에서 AOP가 활용되는 대표적인 예가 무엇이 있을까요?