Spring

Spring Framework 정리

SouthernDuck 2023. 7. 4. 11:58
728x90

 

■ 개념

- 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크

- 전자정부 표준프레임워크의 기반 기술

 

■ 특징

1. 제어 역전(IoC; Inversion of Control)

- 전통적인 프로그래밍에서는 개발자가 작성한 프로그램이 외부 라이브러리의 코드를 호출해서 이용

  (모든 작업을 사용자가 제어하는 구조)

- 반대로 제어 역전은 외부 라이브러리 코드가 개발자의 코드를 호출

- 즉, 제어권이 프레임워크에 있어서 필요에 따라 스프링 프레임워크가 사용자의 코드를 호출

 

의존성(Dependency)

> A객체가 new 생성자를 이용해서 A객체 내에 B객체를 생성했을 경우 A객체는 B객체와 의존 관계를 가진다.

 

 

의존성 주입

* 의존성 주입(DI; Dependency Injection): 객체 간 의존 관계를 코드 내에서 정의하는 대신, 외부에서 의존성을 주입하는 것

- 의존성: 클라이언트에게 무슨 서비스를 사용할 것인지 알림

- 주입: 의존성(서비스)을 사용하려는 객체(클라이언트)로 전달하는 것

- A객체가 B객체를 사용(의존)하고자 할 때 외부(IoC Container*)에서 생성된 B객체를 매개변수 형태로 전달 받아 사용
- *컨테이너(객체를 담는 공간)는 객체의 생명주기를 관리, 생성된 인스턴스에게 추가적인 기능을 제공

- Spring Framework도 객체의 생성과 의존성을 관리는 컨테이너가 있는데 그것이 IoC Container(=Spring Container)

 

의존성 주입 예제 - 세터 주입 / 생성자 주입

 

- 의존성 주입은 코드의 테스트 용이성을 향상

- 객체 간의 결합도를 낮추어 유지보수성과 확장성을 개선

- 코드의 재사용성을 높이고, 의존 관계의 변경에 유연하게 대처할 수 있는 장점을 제공

 

* Bean

- Spring IoC 컨테이너가 관리하는 자바 객체 (컨테이너에 의해 생명주기가 관리됨)

- 의존성 주입을 통해 객체 간 결합도를 낮춤
- 기본적으로 싱글톤(Singleton)으로 생성됨

 

 

2. POJO(Plain Old Java Object)

-  해당 프레임워크에 종속되어 있는 무거운 객체들을 만드는 것에 반발하며 나타난 용어

- 별도의 프레임워크 없이 Java EE(Enterprise Edition)를 사용할 때에 비해 특정 인터페이스를 직접 구현하거나 상속받을 필요가 없어 기존 라이브러리를 지원하기가 용이하고, 객체가 가볍다.

 

 

3. 관점 지향 프로그래밍(AOP; Aspect Oriented Programming)

- 여러 객체에서 공통적으로 사용하고 있는 기능을 분리해서 모듈화하고 재사용하는 프로그래밍 기법
- 핵심 기능과 공통 기능의 구현을 분리하여 핵심 기능의 코드 수정없이 공통 기능 적용 가능

 

 

4. MVC 패턴

MVC 패턴

 

728x90
반응형