본문 바로가기

개발자노트/Spring

Spring 개념 IOT ( 제어의 역행 )

[제어의 역행]
Inversion of Control


객체 생성문을 직접 작성해서 해당 객체를 사용할 수 있게 하는게 아니라
객체가 필요한 곳에 객체를 주입(Injection)함으로써 해당 객체를 사용할 수 있도록 해주는 것이다.

누가 주입해주나? = 스프링 컨테이너


효과 :
➡ 객체의 생성과 객체 간 의존관계에 대한 코드가 클래스코드소스 상에서 사라지게 된다
즉, 객체를 변경해줘야할 때 해당 객체를 사용 중인 모든 클래스에서 소스를 수정하지 않아도 된다
    == 유지보수 용이 , 의존관계를 명시

 

 

그렇다면 스프링 컨테이너란??

스프링 애플레이션 내의 여러 클래스에서
각각의 객체들을 생성하고 의존관계를 설정하는 작업을 대신 수행해주는 곳이 스프링 컨테이너

 

❗ 동작순서

애플리케이션이 실행되면, 스프링 컨테이너가 구동되면서 각각의 Spring Bean들을 등록하며,

객체가 필요한 곳에 해당 객체 (Spring Bean)을 주입(injection)해준다.

➡ 즉, 객체가 필요한 클래스에선 객체의 생성 및 의존관계에 대한 코드를 작성하지 않아도 객체를 사용할 수 있게 된다.


사용방법
IoC와 관련된 설정을 applicationContext.xml로 작성 ( 스프링 설정 파일 )
Spring에서 만드는 xml 파일은 Spring Bean Configuration file 로 만든다.
<beans> 안에 <bean></bean> 여러개를 넣을 수 있다.
파일 옆 아이콘에 S가 붙으면 스프링컨테이너 소속클래스가 되었다는 뜻이다.
 

 



< 추가적인내용  >
DeleteAction da1=new DeleteAction();
DeleteAction da2=da1;
DeleteAction da3=da2;
  >> da1,2,3는 같은 주소를 가지고있음 == 하나의 객체를 공유하고 있음
  >> "싱글톤 패턴" 유지  -> applicationContext.xml에 bean에 ( scope = "singleton" ) 이 디폴트 설정되어있음
                                                                                                 ( scope = "prototype" )로 객체 여러개 생성 가능
  >> new를 작성하는 사람이 책임지고 싱글톤 패턴을 유지해야함
  >> 컨테이너에게 싱글톤 패턴을 유지할 수 있도록 설정되어 있음