본문으로 바로가기

스프링의 특징

category 언어/Spring 2019. 12. 11. 17:25

JavaConfig 장점

  • 주입(injection), 상속, 다형성 등의 기능을 수행할 수 있다.
  • 빈에 대한 생성과 초기화에 대한 모든 권한을 가진다.
  • IDE같은 개발 도구의 도움 없이도 손쉽게 리팩토링이 가능하다.
  • 컨테이너 초기화 시 큰 비용이 드는 클래스 패스 스캐닝(Classpath Scanning)을 줄일 수 있다.
  • 필요에 따라 XML 또는 Property 등을 사용할 수 있다.

프레임워크

  • 뼈대나 근간을 이루는 코드들의 묶음, 한 마디로 프로그램을 만들기 위한 기본 틀이라고 보면 된다.

프레임워크를 사용하는 이유

  • 각 개발자마다 실력차이가 많이 나기 때문에 개발자의 구성에 따라 프로젝트의 결과물이 차이가 많이 난다.
  • 개발자 입장에서 완성된 구조에 자신이 맡은 코드를 개발해서 넣어주는 형태이므로 개발 시간을 단축할 수 있다.
  • 회사 입장에서 프레임워크를 사용하면 일정한 품질을 보장할 수 있다.
  • 개발에 필요한 구조를 이미 코드로 만들어놓았기 때문에, 개발자가 해당 구조에 코드를 조립하는 형태의 개발이 가능하다.

스프링 프레임워크의 차별성

  • 복잡함에 반기가 들어서 만들어진 프레임워크
    • EJB에 비해 가볍기 때문에 엔터프라이즈급의 시스템을 개발할 수 있다.
  • 프로젝트의 전체 구조를 설계할 때 유용한 프레임워크
    • 스프링은 어느 한 분야에 집중하기 보다, 전체 구조를 설계할 수 있다.
  • 다른 프레임워크들의 포용
    • 스프링은 전체 구조에 집중했기 때문에 특정한 영역의 프레임워크와 공존할 수 있다.
  • 개발 생산성과 개발도구의 지원

스프링의 주요 특징

  • POJO 기반의 구성

    • 쉽게 말하면, Java코드를 이용해서 객체를 구성하는 방식을 스프링에서 사용할 수 있다.
    • 특정 라이브러리나 컨테이너의 기술에 종속적이지 않다는 이야기임
    • 가장 일반적인 형태로 코드를 작성하고 실행할 수 있기 때문에 생산성에 유리하고, 코드에 대한 테스트 작업 역시 좀 더 유연하게 할 수 있다.
  • 의존성 주입(DI)을 통한 객체 간의 관계 구성

    • 의존성

      • 하나의 객체가 다른 객체의 상태에 따라 영향을 받는 것
      • 간단히 표현하면, 생성자 호출이다. 즉 new 연산자이다.
    • 주입

      • 외부에서 객체를 생성해서 넣어주는 것
    • 의존성 주입

      • 어떤 객체가 필요한 객체를 외부에서 밀어 넣는다.
  • AOP(Aspect-Oriented-Programming) 지원

    • AOP

      • 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하는 기능
      • 관점 지향 프로그래밍
    • 장점

      • 개발자는 핵심 비즈니스 로직에만 집중해서 코드를 개발할 수 있다.
      • 각 프로젝트마다 다른 관심사를 적용할 때 코드의 수정을 최소화 시킬 수 있다.
      • 원하는 관심사의 유지보수가 수월한 코드를 구성할 수 있다.
  • 편리한 MVC 구조

  • WAS의 종속적이지 않은 개발환경