본문 바로가기

Java

SpringFramework 사용이유 및 장단점

반응형

SpringFramework 사용이유

목적

  1. 자주 사용하는 SpringFramework에 대한 장점과 단점을 설명하고 사용하는 이유를 알아보자

Framework란?

바다를 건너는 주행이 쉬울때

제공된 도로로 주행이 쉬울때

  • 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화 된 형태로 클래스들을 제공하는 것
  • 그러므로 한 프로젝트에서 동일한 프레임워크를 사용한다는 것은 동일한 설계 및 흐름을 협의 한 상태로 개발을 진행하는 것
  • 여러 프레임워크들은 지향하는 목적이 있으며 그 목적에 맞게 사용하는것도 개발자의 덕목

SpringFramewok란?

  • POJO(Plain Old Java Object)기반 구성
    • 코드 작성 시 개발자가 특정 라이브러리에 의존하지 않고 개발하는 것
    • Spring 에서는 ORM 기능을 사용하기 위해 JPA라는 표준 인터페이스를 제공
  • 제어반전(IOC)을 지원
    • 컨트롤의 제어권을 사용자가 갖는 것이 아닌 프레임워크에서 정하는 것
    • Autowired 어노테이션을 이용해 Repository 클래스를 “외부”에서 지정함

  • IOC을 통한 DI가 적용 된 소스

  • IOC가 적용되지 않은 동작소스

  • 의존성 주입(DI)를 지원한다.
    • 실제로 IOC와 혼동되는 개념이며, 내용은 비슷하지만 뜻하는 바가 다르다.
    • DI는 의존관계를 어떻게 가질 것인가에 대한 문제고, IoC는 누가 소프트웨어의 제어권을 갖고 있느냐의 문제다
      참고 사이트
    [Spring] Spring IoC와 DI란?
    • 필드 주입 - SRP 위반 가능성이 커지며 런타임 시점에서 IOC를 통해 주입되므로 순환참조 가능성 발생
    • 수정자 주입
      • setter를 이용한 주입방식이며, 선택적인 의존성 사용 가능
      • 런타임 시점에서 IOC를 통해 주입되므로 순환참조 가능성
      • 참조하지 않고 사용될 수 있으므로 NPE 가능성
    • 생성자 주입
      • 의존 관계를 모두 주입해야만 객체 생성 가능
      • 컴파일 시점에서 선언되므로 순환참조 방지 가능
  • 관점지향프로그래밍(AOP) 지원
    • 데이터베이스의 트랜잭션 기능 등을 지원
  • 높은 확장성

 


SpringFramework 장점

참고 사이트 - 역시 이론적인 부분말고 실무자들의 경험에 대한 토론이 더 좋다.

OKKY - 스프링을 사용하는 이유

  1. 개발기간 단축 및 개발역량 평준화
    1. 개발에 필요한 구조가 이미 구현되어 있음(MVC패턴 등)
  2. 비즈니스 로직에 집중할 수 있음
    1. Application context라는 IOC엔진을 통해 의존주입을 단순화
  3. AOP 지원으로 DB 트랜잭셔 기능 등 코드의 가독성을 높일 수 있음

SpringFramework 단점

  1. 프레임워크 학습에 대한 러닝커브
    1. Spring이 갖는 기술문제점은 아님.
  2. 무거운 프레임워크

SpringFramework의 단점 중 해당 항목외로 코딩 능력 저하 등 같은 내용이 있었는데,

해당 사항은 SpringFramework의 편리성이 가져오는 문제점으로 보이며, 이것은

편의성을 주는 서비스들에 대한 공통사항으로 보여 SpringFramework 단점으로 보이진 않는다.

 

 

반응형