스프링(Spring) 프레임워크 기본 개념 강좌 (3) - IoC
 

1. 스프링의 핵심 개념

 - 이어서 계속

 

 

 

3) IoC 컨테이너 (스프링 컨테이너)

 * 제어의 역전 – 외부(컨테이너)에서 제어를 함.

 

> 빈(Bean) : 
 스프링이 제어권을 가지고 직접 만들고 관계를 부여하는 오브젝트.

 

> 빈 팩토리(Bean Factory) : 
 빈(오브젝트)의 생성과 관계 설정 제어를 담당하는 IoC오브젝트. 
 좀 더 확장한 애플리케이션 컨텍스트(application context)를 주로 사용.

 

> 애플리케이션 컨텍스트: (IoC 컨테이너 or  스프링 컨테이너)
 DI를 위한 빈 팩토리에 엔터프라이즈 애플리케이션을 개발하는 데 필요한 여러 가지 컨테이너 기능을 추가한 것.

 

> 설정정보/설정 메타정보
 구성정보 or 형상정보 (XML)

 

> 스프링 컨테이너(IoC 컨테이너) : 
 IoC 방식으로 빈을 관리한다는 의미에서 애플리케이션 컨텍스트나 빈 팩토리를 의미.

 

IoC컨테이너는 다른 용어로 빈 팩토리(Bean Factory), 애플리케이션 컨텍스트(Application Context) 라고도 불림.
스프링의 IoC 컨테이너는 일반적으로 애플르케이션 컨텍스트를 말함.

 

* 빈 팩토리를 애플리케이션 컨텍스트 또는 IoC컨테이너라 말하기도 하지만, 사실 애플리케이션 컨텍스트는 빈을 좀 더 확장한 개념.
* 애플리케이션 컨텍스트는 그 자체로 IoC와 DI를 위한 빈 팩토리(Bean Factory)이면서 그 이상의 기능을 가짐.
* 빈팩토리와 어플리케이션컨텍스트는 각각 BeanFactory, ApplicationContext 두 개의 인터페이스로 정의
* ApplicationContext 인터페이스는 BeanFactory 인터페이스를 상속한 서브인터페이스.
* 실제로 스프링 컨테이너 또는 IoC 컨테이너라고 말하는 것은 바로 이 ApplicationContext 인터페이스를 구현한 클래스의 오브젝트.
* 컨테이너가 본격적인 IoC 컨테이너로서 동작하려면 POJO클래스와 설정 메타정보가 필요.

   (스프링 애플리케이션 : POJO 클래스와 설정 메타정보를 이용해 IoC 컨테이너가 만들어주는 오브젝트의 조합.)

 

 * IoC 컨테이너
 어떠한 객체의 명세서를 작성하고, 스프링 라이브러리는 해당 명세대로 객체를 생성. 생성된 객체(그리고 디펜던시)들을 보관하는 공간을 의미.

 

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

 

* EJB : Enterprise Java Bean (엔터프라이즈 자바빈) – 효율적으로 서버 관리를 해주고, 또 프로그램 관련 문제들을 알아서 처리해준다는 개념.

  (연결 관계가 복잡하고, 무겁고, 독립적이지 못하다)
* DL : Dependency Lookup 

* DI : Dependency Injection

 

* DL(Dependecy Lookup) - JNDI 같은 저장소에 의하여 관리되고 있는 bean을 개발자들이 직접 컨테이너(Container)에서 제공하는 API를 이용하여 lookup하는 것을 말함. 따라서 container와의 종속성이 생김. (JNDI 컨테이너에 의존성이 강하다. )

 오브젝트간에 디커플링(decoupling)을 해주는 면에서 장점이 있지만 이렇게 만들어진 오브젝트는 컨테이너 밖에서 실행 할 수 없고 JNDI외의 방법을 사용할 경우 JNDI관련 코드를 오브젝트내에 일일히 변경해 줘야 하며 테스트하기 매우 어렵고 코드 양이 매우 증가하고 매번 Casting해야 하고 NamingException같은 checked exception을 처리하기 위해서 exception처리구조가 매우 복잡해지는 단점이 있음.

 EJB container, Spring container 에서 지원. 

 

* DI (Dependecy Injection) – 각 class 사이의 의존관계를 빈 설정 정보를 바탕으로 container가 자동적으로 연결해 주는 것을 말함. 따라서 lookup과 관련된 코드들이 오브젝트 내에서 완전히 사라지고 컨테이너에 의존적이지 않은 코드를 작성할 수 있음.

 단지 빈 설정 파일에서 의존관계가 필요하다는 정보를 추가하면 됨.
1) Setter Injection – 클래스 사이의 의존관계를 연결시키기 위하여 setter 메소드를 이용하는 방법. property tag 사용. 
2) Constructor Injection – 클래스 사이의 의존관계를 연결시키기 위하여 constructor를 이용하는 방법. constructor-arg tag 사용. 
3) Method Injection – 싱글톤(Singleton) 인스턴스와 non singleton 인스턴스의 의존관계를 연결시킬 필요가 있을 때 사용하는 방법.

 

 

참고) JNDI (Java Naming and Directory Interface)

* 엔터프라이즈 애플리케이션을 위한 네이밍과 디렉토리 서비스 표준 인터페이스
* Java 소프트웨어 클라이언트가 이름(Name)을 이용하여 데이터 및 객체를 찾을 수 있도록 도와주는 디렉토리 서비스에 대한 Java API.

[Naming Service 구조]

 

Naming Service (네이밍 서비스)
 * Java Naming and Directory Interface(JNDI) API를 이용하여 자원(Resource)을 찾을 수 있도록 도와주는 서비스. Naming 서비스를 지원하는 Naming 서버에 자원을 등록하여 다른 어플리케이션에서 사용할 수 있도록 공개하고, Naming 서버에 등록되어 있는 자원을 찾아와서 이용할 수 있게 함.

 * DNS서버 같은 개념.

 

JNDI(Java Naming and Directory Interface)
 - 디렉토리 서비스에서 제공하는 데이터 및 객체를 발견하고 참고하기 위한 자바 API.
 - J2EE 플랫폼의 일부.
 - 여러 대의 서버 간에 JNDI를 이용하여 객체를 등록, 참조하여 이용.
 - javax.naming 패키지 안에 존재.
 - 여러 웹 서버(톰캣, 웹로직, 제우스 등)에서 사용.
 - 기본 네임스페이스는 java:com/env.

 

 



출처: http://ooz.co.kr/178 [이러쿵저러쿵]

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
35 [EMF] EMF Tutorial EMF 튜터리얼 file 졸리운_곰 2023.08.23 283
34 Eclipse RAP Tutorial for Beginners - Workbench Application (OLD) file 졸리운_곰 2021.01.30 323
33 Learn Eclipse GMF in 15 minutes file 졸리운_곰 2019.11.27 253
32 [Eclipse] GEF entry series (10, an implementation of the form) file 졸리운_곰 2019.11.25 212
31 GEF Programmer Guide 번역 졸리운_곰 2019.11.25 227
30 Learn Eclipse GMF in 15 minutes file 졸리운_곰 2019.11.20 224
29 RCP 에디터 정리 졸리운_곰 2019.11.20 333
28 다른 그림과 관련하여 GEF 편집기 레이아웃에서 그림의 위치 제한 조건을 동적으로 계산 Dynamically calculating the position constraints for a figure in a GEF editor layout in relation to another figure file 졸리운_곰 2019.11.20 277
27 RCP 등에서 .mf 파일로 다른 프로젝트 익스포트 포함시 라이브러리(메소드)를 찾지 못할 때, Eclipse RCP - cant resolve importing libraries in final build file 졸리운_곰 2019.10.15 410
26 ESE2006-EclipseModelingSymposium15_GMF.pdf file 졸리운_곰 2019.09.21 302
25 GMF_Creation_Review.pdf file 졸리운_곰 2019.09.21 366
24 Eclipse EMF and GMF Tutorial file 졸리운_곰 2019.09.21 222
23 GMF Tutorial/ko file 졸리운_곰 2019.09.20 347
22 Model Driven Architecture approach to domain of graphical editors file 졸리운_곰 2019.09.20 268
21 Single_Sourcing_RAP_RCP_en.pdf file 졸리운_곰 2019.05.15 311
20 Rich client platform 설명 및 배우기 참고 졸리운_곰 2019.05.15 309
19 Rich Ajax Platform, Part 1: 소개 file 졸리운_곰 2019.05.15 320
18 또 하나의 크로스 플랫폼: Eclipse RAP file 졸리운_곰 2019.05.15 319
17 Eclipse 4 RCP 튜토리얼(완료) file 졸리운_곰 2019.05.14 977
16 Updating UI in Eclipse RCP 졸리운_곰 2015.11.07 408
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED