지식

[Spring] IoC와 AOP 이제는 이해해보자

colin2 2024. 6. 25. 12:06

 

 

공부할 때 분명 알았는데, 시간 지나면 잊어먹는 IoC와 AOP 이제는 외워야 할 때도 되었고, 혹시 또 잊어먹으면 바로 찾아보기 위해 정리를 할 것이다.

 

스프링을 시작하면서 가장 많이 들었던 이야기가 바로 '낮은 결합도'와 '높은 응집도'이다.

 

이것과 연관지어 IoC와 AOP를 정리해보자.

 

제어의 역행 (Inversion of Control, IoC) - 낮은 결합도 유지

출처 입력

IoC 적용 전: 의존관계에 있는 객체를 변경할 때는 반드시 자바 코드를 수정해야 한다.

IoC 적용 후: 객체 생성을 컨테이너가 대신 처리하고, 객체와 객체 사이의 의존관계 역시 컨테이너가 처리한다.

-> 소스에 의존관계가 명시되지 않기 때문에 결합도가 떨어져서 유지보수가 편리해진다.

 

한마디로 new 객체를 생성하지 않는다는 말.

 

  • 결합도를 낮추기 위한 방법
    • 다형성 이용하기 : 상속과 메소드 재정의(Overriding), (묵시적)형변환
    • 디자인 패턴 이용히가: 매개변수 필요

 

  • 의존성 관리 방법
    • Dependency Lookup
    • Dependency Injection
      • Setter Injection
        • .xml : constructor-arg
      • Constructor Injection
        • .xml : property

관점지향 프로그래밍 (Aspect Oriented Programming, AOP) - 높은 응집도 지원

출처 입력

핵심 비즈니스 로직과 각 비즈니스 메소드마다 반복해서 등장하는 공통 로직을 분리하여 응집도가 높게 개발할 수 있도록 지원한다.

 

공통으로 사용하는 기능들을 외부의 독립된 클래스로 분리하고, 선언적으로 처리하여 적용한다.

-> 공통 기능을 분리하여 관리할 수 있기 때문에 응집도가 높고, 유지보수를 향상시킬 수 있다.

 


 

이정도면 스프링 의존성 본격 공부하기 전 기초 지식으로는 충분하지 않을까 생각한다.