[제어의 역행]
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를 작성하는 사람이 책임지고 싱글톤 패턴을 유지해야함
>> 컨테이너에게 싱글톤 패턴을 유지할 수 있도록 설정되어 있음
'개발자노트 > Spring' 카테고리의 다른 글
Spring AOP Joinpoint 바인드 변수 (0) | 2022.09.16 |
---|---|
AOP 용어 정리 (0) | 2022.09.15 |
의존성 주입 ( DI = Dependency Injection ) (2) | 2022.09.14 |
Spring AOP ( 관점지향 프로그래밍 ) (0) | 2022.09.13 |
이클립스에서 Spring 프레임워크 [플러그인] 사용하기 (0) | 2022.09.13 |