본문 바로가기

BE/Spring

[Spring] IOC, DI

 

 

 

 

 

IOC, DI ( Dependency Injection )

IOC

IOC : 객체들을 저장하고 있는 틀

( 기존에는 new 연산을 사용해서 객체를 사용했으나, 스프링에서는 new 연산을 사용하지 않고 특정 객체를 미리 만들어 특정 저장소에 저장해둔 뒤 객체를 꺼내서 사용한다, 이때 객체를 저장하고 있는 틀이 IOC 이다 )

DI

DI : 의존관계 주입 기능

( 객체를 만들었을때 또 다른 객체와 연결되어 잇는 경우 의존 관계가 있다 )

ex) 칼이라는 객체가 있다.... 또 주방장이라는 객체가 있는데 주방장이라는 객체는 칼이 있어야 요리를 할 수 있으므로 주방장 객체는 칼에 대한 의존 관계이다.

 

 

 

 

 

xml 파일을 통해 객체를 만들어 사용하는 방법

Spring Legacy Project 생성

 

이름 짓고 Spring MVC project 선택 후 Next >

 

패키지 이름을 url 형식으로 만든 뒤 Finish

 

프로젝트 우측 클릭 > Maven > Update Project 클릭 하여 프로젝트를 업데이트

 

객체를 생성할 클래스 파일 생성

 

STBean.java 파일 작성

 

Student 클래스 파일 작성하여 작성

 

메인 클래스 생성

 

메인 클래스 작성

 

콘솔창에 출력됨

 

STBean 에서 변수를 생성 후 Student 클래스의 객체를 생성하여 안의 메소드를 사용 > 즉, STBean 이 객체를 연결시켜주는 DI 역할을 한다 ( 기존에 자바를 사용하던 방식 )

 

이제는 스프링에서 사용하는 DI 형태를 사용할 것임

 

스프링에서 사용하는 형태의 DI 를 사용할 것임, 패키지 생성 후 MainClass 생성

 

Spring Bean Configuration File > xml 파일 생성

 

이제 xml 안에 객체를 생성할 것임

 

id : 객체 이름, class : 객체 경로

 

id : 객체 이름, class : 객체 경로

 

st01 객체를 st 라는 이름으로 의존성을 주입한다는 의미 ( Beans Graph 를 눌러서 시각적으로 확인 가능, 돌아가려면 Source 클릭 )

 

이제 MainClass 에서 해당하는 값을 꺼내와서 사용할 것임

 

xml 파일에 선언해 놓은 객체를 GenericXmlApplicationContext 를 사용하여 경로를 불러와 변수로 담아 사용

 

이번에는 setter 로 객체에 내용을 생성하는 것이 아닌 xml 파일을 사용해서 값을 넣어서 사용 > 실행 결과

 

 

 

 

 

실습 예제

실습 예제

 

예제 풀이

파일 세팅

 

PrintBean.java 추가 작성

 

xml 작성 ( PS 객체를 생성하여 PB 객체 안의 ps 에 의존성을 주입 )

 

메인 클래스 작성 후 실행

728x90