스프링 DI는 인터페이스를 이용해서 컴포넌트화를 실현하는 것이다. 쉽게말하면 의존관계를 주입한다고도 한다. 이 말은 어떤 오브젝트의 프로퍼티(인스턴스 변수)에 그 오브젝트가 이용할 오브젝트를 셋팅(주입)한다는 의미다. 다시말하면 어떤 오브젝트가 의존(이용)할 오브젝트를 주입, 인젝션 한다는 뜻이다.
빈의 생명주기
BeanFactory 상속관계
예제 프로젝트 구조
어노테이션을 이용한 스프링 DI 예제
ProductSampleRun.java
@Autowire를 붙이면 DI 컨테이너가 그 인스턴스 변수의 형에 대입할 수 있는 클래스를,
@Componet 가 붙은 클래스중에서 찾아서 @Autowire가 붙은 변수에 인젝션 해준다.(Bean정의에서 스탠할 범위지정필요)
@Componet가 붙은 클래스가 여러개 있어도 형이 다르면 @Autowire가 붙은 변수 인젝션 안된다. (byType)
인스턴스 변수로의 인젝션은 접근 제어자가 private이어도 인젝션할 수 있으므로 set메소드가 필요없다.
그리고 xml로 기술된 Bean 정의 파일도 만들어야한다. -> applicationContext.xml
applicationContext.xml
- bean 정의 파일이다.
- bean 스키마 :bean(컴포넌트) 설정
- context 스키마 : bean(컴포넌트) 검색과 어노테이션 설정
- aop, tx mvc 스키마 등 존재..
Product.java
ProductDao.java
ProductDaoImpl.java
ProductService.java
ProductServiceImpl.java
@Autowire를 붙이면 DI 컨테이너가 그 인스턴스 변수의 형에 대입할 수 있는 클래스를
@Componet 가 붙은 클래스중에서 찾아서 @Autowire가 붙은 변수에 인젝션 해준다.(Bean정의에서 스탠할 범위지정필요)
@Componet가 붙은 클래스가 여러개 있어도 형이 다르면 @Autowire가 붙은 변수 인젝션 안된다. (byType)
인스턴스 변수로의 인젝션은 접근 제어자가 private이어도 인젝션할 수 있으므로 set메소드가 필요없다.
그리고 xml로 기술된 Bean 정의 파일도 만들어야한다. -> applicationContext.xml
파일경로
예제 파일
참고: 스프링 4입문 (한빛미디어)
'웹개발 > 스프링' 카테고리의 다른 글
스프링 4 MVC - part 1 (0) | 2020.11.10 |
---|---|
스프링 4 비즈니스 로직 설계와 트랜잭션 (0) | 2020.11.09 |
스프링 4 DAO 구현 (1) | 2020.11.08 |
스프링 4 AOP (0) | 2020.11.08 |
스프링 4 Bean Config (0) | 2020.11.07 |