2020. 8. 11. 16:55ㆍ개발공부/Spring
#08/11/20 - Day01
Spring - DI(Dependency Injection), IoC(Inversion of Control)
1. 개념
Spring은 뼈대를 잡는 것이고 사용법을 익히면 된다.
객체를 만들어놓고 필요할 때 꺼내쓰는 특징이 있는데, 그것을 각각 DI, IoC라고 부른다.
2. DI, IoC
1) Ioc : Inversion of Control 프로그램을 제어하는 패턴
제어의 역행이란 의미는 외부의 객체를 내부로 끌어와서 사용하기 때문이다.
2) DI : Dependency Injection IoC 패턴의 구현방법 중 하나.
3. 사용방법
Spring 프로젝트를 생성하면 자동 생성된다고 한다. 처음 시작하는만큼 구동원리를 파악하기 위해
수동으로 구현해본다.
<bean id="res" class="com.spring.basic.ex01.Restaurant" >
<constructor-arg ref="chef" />
</bean>
→ Restaurant 클래스 생성자 constructor는 chef를 참조해서 객체가 불려질 때 chef도 자동적으로 호출되게끔 해준다.
public class Main {
public static void main(String[] args) {
// Chef chef = new Chef();
// Restaurant res = new Restaurant(chef);
// Hotel hotel = new Hotel(res);
// hotel.reserveRestaurant();
//spring 객체 뽑는 객체
GenericXmlApplicationContext ct =
new GenericXmlApplicationContext("classpath:test-config.xml");
Hotel hotel = ct.getBean("hotel", Hotel.class);
hotel.reserveRestaurant();
}
}
→ 클래스 안에서 수동으로 뽑아줄 땐 GenericXmlApplicationContext 객체를 사용한다. 객체가 등록된 XML 위치를 지정해준다. 그리고 getBean 메서드를 활용해 가져올 객체명과 클래스 명을 써주면 된다.
4. 참고
- Eclipse 개발환경: JSP 때와 달리 Maven Project를 생성해서 클래스와 객체등록을 해주었다. 몇 가지 설정과 디렉터리 역할을 알고 있으면 이후에 도움이 될 것 같아서 참고로 남긴다.
Eclipse Maven Project 생성
1) 생성방법
- Maven Repo 사이트에서 spring-context 모듈 다운로드(text임)
- pom.xml 에 dependencies 태그 입력 후 복붙
2) 디렉터리 역할
- src/main/java : class 생성
- src/main/resources :컨테이너 같은 XML sources 생성
'개발공부 > Spring' 카테고리의 다른 글
[Spring] - Spring MVC 개발환경 설정 (0) | 2020.09.02 |
---|---|
[Spring] - DI _자동 객체 주입(@; Annotation) (0) | 2020.09.02 |
[Spring] - DI(Dependency Injection) (복습) (0) | 2020.08.31 |
[Spring] - Maven 방식 이해하기 (복습) (0) | 2020.08.26 |
Spring - 입력값 처리 @GetMapping (0) | 2020.08.25 |