Spring Framework

Salki·2020년 10월 7일
0

목록 보기
2/2

Spring Framework

스프링 프레임워크는 자바플랫폼을 위한 오픈소스 애플리케이션 프레임워크이다. 자바 개발을 위한 프레임워크로 종속 객체를 생성해주고, 조립해주는 도구로써 주요 기능으로 DI, AOP, MVC, JDBC를 제공한다.

Spring 주요 특징

  • POJO(Plain Old Java Object) 기반의 구성
  • DI(Dependency Injection, 의존성 주입)을 통한 객체 간의 관계 구성
  • AOP(Aspect Oriented Programming) 지원
  • 편리한 MVC 구조
  • WAS에 독립적인 개발 환경

POJO 기반의 구성

스프링은 내부적으로 객체 간의 관계를 구성할 때 별도의 API 등을 사용하지 않는 POJO(Plain Old Java Object)만으로 구성이 가능하도록 되어있다. 따라서, 일반적인 Java 코드를 이용하여 객체를 구성하는 방식 그대로 스프링에서 사용이 가능하다.

이것은 특정한 라이브러리나 컨테이너에 기술에 종속적이지 않다는 것을 의미한다. 이로 인하여 개발자는 가장 일반적인 형태로 코드를 작성하고 실행할 수 있기 때문에 높은 생산성과 유연한 테스트를 할 수 있는 장점을 갖게 된다.

DI(Dependency Injection, 의존성 주입)을 통한 객체 간의 관계 구성

IOC(Inversion of Control(제어의 역전)

DI을 이해하기 위해서는 IoC(제어의 역전)의 개념을 알고 넘어가야 한다.
스프링을 쓰기 전에는 개발자가 프로그램의 흐름을 제어하는 주체였다.
스프링에서는 프로그램의 흐름을 프레임워크가 주도하게 된다.(ex. @Autowired 등으로 Bean을 자동 주입)
객체의 생성~ 생명주기 관리를 컨테이너가 도맡아서 하게 된 것이다.
즉, 제어권이 컨테이너로 넘어가게 되고, 이것을 제어권의 흐름이 바뀌었다고 하여 IoC이라고 하게 된다.
제어권이 컨테이너로 넘어옴으로써 DI, AOP(관점 지향 프로그래밍)등이 가능하게 된다.

DI의 개념

각 클래스간의 의존관계를 빈 설정(Bean Definition) 정보를 바탕으로 컨테이너가 자동으로 연결해주는 것을 말함.

  • 개발자들은 단지 빈 설정파일에서 의존관계가 필요하다는 정보를 추가하면 된다.
  • 객체 레퍼런스를 컨테이너로부터 주입 받아서 실행 시에 동적으로 의존관계가 생성된다.
  • 컨테이너가 흐름의 주체가 되어 애플리케이션 코드에 의존관계를 주입해 주는 것이다.

DI의 유형

  • Setter Injection(Setter 메서드를 이용한 의존성 삽입) : 의존성을 입력 받는 setter 메서드를 만들고 이를 통해 의존성을 주입한다.

  • Constructor Injection(생성자를 이용한 의존성 삽입) : 필요한 의존성을 포함하는 클래스의 생성자를 만들고 이를 통해 의존성을 주입한다.

  • Method Injection(일반 메서드를 이용한 의존성 삽입): 의존성을 입력 받는 일반 메서드를 만들고 이를 통해 의존성을 주입한다.

Spring DI 컨테이너에 대한 이해

  • Spring DI 컨테이너의 개념

    • Spring DI 컨테이너가 관리하는 객체를 빈(bean)이라 하고, 이 빈들을 관리한다는 의미로 컨테이너를 빈 팩토리(BeanFactory)라고 부른다.

    • 객체의 생성과 객체 사이의 런타임(run-time) 관계를 DI 관점에서 볼 때는 컨테이너를 BeanFactory라고 한다.

    • BeanFactory에 여러가지 컨테이너 기능을 추가하여 애플리케이션 컨텍스트(ApplicationContext)라고 부름,.

  • BeanFactory

    • Bean을 등록, 생성, 조회, 반환 관리함.
    • 보통은 BeanFactory를 바로 사용하지 않고, 이를 확장한 ApplicationContext를 사용함.
    • getBean() 메서드가 정의되어 있음.
  • ApplicationContext

    • Bean을 등록, 생성, 조회, 반환 관리하는 기능은 BeanFactory와 같음.
    • Spring의 각종 부가 서비스를 추가로 제공함
    • Spring이 제공하는 ApplicationContext 구현 클래스가 여러 가지 종류가 있음.

AOP 지원

관점지향 프로그래밍을 위한 풍부한 지원을 한다. 트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 기능을 분리하여 관리할 수 있다.


참고 출처
https://mo-world.tistory.com/
https://dog-developers.tistory.com/12
https://shlee0882.tistory.com/200
https://coding-restaurant.tistory.com/102
https://coding-restaurant.tistory.com/102

profile
실력있는 개발자로 거듭나기까지..

0개의 댓글