본문 바로가기

FrameWork/Spring 3.0

[Spring 3.0] DI & AOP 개념


스프링에는 중요한 개념중에 DI 과 AOP 개념이 있는데, 먼저 DI 개념에 대해서 간략하게 숙지해 보도록하자.

DI 란 ?

=> 객체 간의 의존관계를 객체 자신이 아닌 외부의 조립기가 수행해 준다는 개념

DI 패던을 적용할 경우 클래스는 의존하는 객체를 전달받기 위한
설정 메서드 (setter method) 나 생성자를 제공할 뿐  직접 의존하는 클래스를 찾지 않는다.
의존(Dependency) 하는 객체를 조립기가 삽입 (Inject) 해주기 때문에 이 방식을 DI 패턴이라고 부른다.
DI 패턴 사용시 단위 테스트가 가능하다.
단위테스트는 코드의 품질을 향상시키고 개발속도를 증가시키는데 도움이 되기 때문에,
DI 패턴이 단일테스트를 진행하는데 도움을 준다.
DI 패턴을 적용하려면 각 객체들을 조립해 주는 조립기가 필요하다.
조립기를 직접 만들기 보다는 DI 패턴을 지원해 주는 프레임워크를 사용하는 것이 좋다.
(그래서 조립기로 쓰일 것이 바로 Spring 프레임워크이다)



DI 패턴에는 2가지 방식이 존재

1. 생성자 <constructor-arg>
2. 메소드 <property>

더 자세한 내용은 책을 찾아보도록 하자.


스프링은 각 개체를 빈(bean) 으로 관리한다.
<beans> 태그는 스프링 설정파일의 루트태그 이며
<bean> 태그는 스프링에 관리할 하나의 객체를 설정하는데 사용한다.
<bean> 태그의 name 속성 : 빈의 이름, class  : 속성이 생성될 객체의 클래스 타입



AOP 란?

=> 공통의 관심사항을 적용해서 발생하는 의존관계의 복잡성과 코드 중복을 해소해 주는 프로그래밍 기법

예를들어, 게시글 쓰기의 경우 현재 사용자가 권한이 있는지 검사하는 보안 처리 로직과 데이터 무결성 처리를 위한 트랜잭션 처리 로직은 게시글쓰기를 수행하기 위해 필요한 로직과는 구분되는 기능이다. 보안처리 및 트랜젝션 처리 뿐만이 아니라 공통관심사항이다.