본문 바로가기
개인 스터디

스프링 프레임워크의 방식

by 태운콩즙 2024. 2. 4.
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 컨테이너 = 애플리케이션 컨택스트  = 빈 팩토리

 

  • 스프링의 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