AOP

    [Spring] AOP(Aspect Oriented Programming), 스프링 AOP

    AOP (Aspect Oriented Programming) AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불린다. 관점 지향은 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 모듈화 하겠다는 것이다. 예를 들어 핵심적인 관점은 비즈니스 로직이 될 수 있고, 부가적인 관점은 핵심 로직을 실행하기 위해 행해지는 데이터베이스 연결, 로깅, 파일 입출력 등이 될 수 있다. AOP는 흩어진 관심사(Crosscutting Concerns)를 모듈화 할 수 있는 프로그래밍 기법이다 위와 같이 클래스 A, B, C에서 공통적으로 나타나는 색깔 블록은 중복되는 메서드, 필드, 코드 등이다. 이때 예를 들어 클래스 A의 주황색 블록..

    [Web] IoC(Inversion of Control), DI(Dependency Injection), AOP(Aspect-Oriented Programming)

    IoC, DI, AOP는 스프링 프레임워크의 특징이며, 스프링 프레임워크의 구조를 이해하기 위해 반드시 알아야 하는 중요 개념이라고 할 수 있다. IoC IoC(Inversion of Control)란 우리말로 '제어의 역행'이라고 한다. 기존의 프로그램은 main()처럼 프로그램이 시작되는 곳에서 필요한 객체를 생성하고, 생성된 객체의 메서드를 호출하는 흐름을 가진다. 이와 달리 IoC는 작업을 수행하는 쪽에서 객체를 생성하는 일반적인 개념을 뒤집은 것으로, 프로그램 제어를 자신이 아닌 다를 곳에 위임하는 것을 말한다. 즉 컨테이너에 객체 생성과 공급을 위임하는 형태다. IoC의 특징 IoC에서는 객체가 자신이 사용할 객체를 생성하거나 선택하지 않는다. 객체는 자신이 어떻게 생성되고 어떻게 사용되는지 ..