728x90
반응형
POJO (Plain Old Java Object) 방식
- "오래된 방식의 간단 한 자바 오브젝트"라는 뜻. Java EE(EJB)등의 중량 프레임워크들을 오래 사용하게 되면서 해당 프레임워크에 종속된 "무거운" 객체를 만들게 된 것에 반발해서 사용되게 된 용어. 특정 자바 모델이나 기능, 프레임워크등을 따르지 않은 자 바 오브젝트를 지칭
AOP(Aspect Oriented Programming)
- "관점 지향 프로그래밍" 로깅, 트랜잭션, 보안 등 여러 부분에서 공통적으로 사용되는 코드(기능)를 분리하여 관리하는 프로그래밍 방식
DI(Dependency Injection)
- "의존성 주입" 객체 간의 의존 관계를 소스 코드 내부에서 처리하지 않고 외부 설정으로 정의되는 방식 소스의 재사용성과 객체 간의 결합도를 낮출 수 있음 스프링 프레임워크가 DI를 처리
IoC(Inversion of Control)
- 제어의 역전’. 개발자가 작성한 코드가 외부 라이브러리를 사용하는 방식(전통적인 방식)이 아니라 외부 라이브러리(프레임워크)가 개발자의 코드를 필요에 따라 사용하는 방식.
Lifecycle 관리
- 자바 객체의 생성, 소멸을 프레임워크가 관리.
-핵심 개념-
• DI(Dependency Injection, 의존성 주입)
- 일체형
- HAS-A 관계
- A가 B를 생성하는 관계
class Car { Car(){ new Engine(); } }
…
Car car = new Car();
DI 종류
- Setter Injection Constructor Injection
B b = new B();
A a = new A(b);
- 스프링에서의 DI
- 부품들을 생성하고 제품을 조립해 주는 공정과정을 대신해 주는 라이브러리
- DI 구현
- 객체의 생성과 도킹에 대한 내용이 소스 코드 상에 있는 것이 아닌 별도의 XML 설정 파일에 분리하여 존재
- Java 소스 컴파일 없이 XML 변경만으로 내용 변경 가능
config.xml
<bean id=“record” class=“di.SprRecord”></bean> // 빈 객체 생성
<bean id=“view” class=“di.SprRecordView”> // 빈 객체 생성
<property name=“record” ref=“record”></property> // setRecord() 호출
</bean>
java의 어느 클래스
// XML을 파싱하여 컨테이너에 담는 작업
ApplicationContext ctx = new ClassPathXmlApplicationContext(“config.xml”);
RecordView = (RecordView) ctx.getBean(“view”);
- IoC (Inversion of Control, 제어의 역전)
- 외부(컨테이너)에서 제어를 함
- 객체 간의 낮은 결합도 유지
- 프레임워크에 제어의 권한을 넘김으로써 클라이언트 코드가 신경 써야 할 것을 줄이는 전략
- 컨테이너가 객체 생성, 객체 사이의 의존관계 처리
- 기본적인 완제품 제작 순서와는 다르게 작은 부품부터 큰 부품으로 제품을 만드는 순서가 역순
- 이러한 일련의 작업을 스프링은 컨테이너라는 곳에 담아서 처리 -> Ioc 컨테이너
- Ioc 컨테이너
- 빈(Bean)
- 스프링이 제어권을 가지고 직접 만들고 관계를 부여하는 오브젝트
- 빈 팩토리(Bean Factory)
- 빈(오브젝트)의 생성과 관계 설정 제어를 담당하는 IoC오브젝트
- 애플리케이션 콘텍스트( application context )라고도 함
- 애플리케이션 콘텍스트(IoC 컨테이너 or 스프링 컨테이너)
- DI를 위한 빈 팩토리에 엔터프라이즈 애플리케이션을 개발하는 데 필요한 여러 가지 컨테이너기능을 추가한 것
- 설정정보/설정 메타정보
- 구성정보 or 형상정보(XML)
- 스프링 컨테이너(IoC 컨테이너)
- IoC 방식으로 빈을 관리한다는 의미에서 애플리케이션 컨텍스트나 빈 팩토리를 의미
- 스프링 컨테이너 = IoC 컨테이너 = 애플리케이션 컨택스트 = 빈 팩토리
- 빈(Bean)
- 스프링의 DI와 IOC
- 각 clascc 사이의 의존 관계를 빈 설정 정보를 바탕으로 container가 자동적으로 연결
728x90
반응형
'개인 스터디' 카테고리의 다른 글
Delegate 에서 Event (0) | 2024.10.07 |
---|---|
Spring MVC 웹서버 구동 방식 (0) | 2024.02.05 |
프레임 워크 (0) | 2024.02.02 |
getter/setter,private (1) | 2023.12.15 |
힙(Heap), 스택(Stack) (0) | 2023.12.10 |