본문 바로가기
개발공부/JAVA Spring

제어 역전 IoC, 의존성 주입 DI, 관점 지향 프로그래밍 AOP

by bzerome240 2023. 2. 11.

제어 역전 IoC (Inversion of Control)

보통의 자바 개발에서는 사용하려는 객체를 선언하고 해당 객체의 의존성을 생성한 후 객체에서 제공하는 기능을 사용한다. => 객체의 관리를 개발자가 직접 제어한다.

하지만 제어 역전을 특징으로 하는 스프링은 사용할 객체를 직접 생성하지 않고 객체의 생명주기 관리를 외부(스프링 컨테이너 또는 IoC 컨테이너)에 위임한다. => 객체의 관리를 컨테이너에 맡긴다.

장점

제어 역전을 통해 의존성 주입(DI), 관점 지향 프로그래밍(AOP) 등이 가능해진다.

개발자는 비지니스 로직을 작성하는데 집중할 수 있다.

 


 

의존성 주입 DI (Dependency Injection)

사용할 객체를 직접 생성하지 않고 외부 컨테이너가 생성한 객체를 주입받아 사용하는 방식

 

의존성 주입받는 방법 : 생성자를 통해

  • 레퍼선스 객체 없이는 객체를 초기화할 수 없게 설계 가능하기 때문에 권장하는 방법! 
@RestController
public class DIController {
	MyService myService;
    
    @Autowired
    public DIController(MyService myService) {
    	this.myService = myService;
    }
}

 


 

관점 지향 프로그래밍 AOP (Aspect-Oriented Programming)

  • OOP를 더욱 잘 사용하도록 돕는 개념
  • 스프링의 아주 주용한 특징

 

기능을 구현할 때 "핵심 기능"과 "부가 기능"으로 구분해 각각 하나의 관점으로 보는 것

핵심기능: 비즈니스 로직이 처리하려는 목적 기능

ex) 상품 정보를 데이터베이스에 저장, 저장된 상품 정보데이터를 보여주는 코드

 

여러 비즈니스 로직에서 반복되는 부가 기능을 하나의 공통 로직으로 처리하도록 모듈화해 삽입하는 방식

 

목적: 모듈화해서 재사용 가능한 구성을 만드는 것

AOP를 구현하는 방법: 스프링은 프락시 패턴을 이용한다.

 

 

 

 

 

 

728x90
반응형

댓글