[Spring] 스프링 프레임워크의 주요 특징
딱지의겨울
·2021. 4. 6. 13:28
1.1 스프링 프레임워크의 간략한 역사
▶ 프레임워크: 뼈대나 근간을 이루는 코드들의 묶음
▶ 프레임워크의 장점
- 프레임워크를 사용하게 되면 프로그램의 기본 구조를 정한 뒤 다른 팀원들은 이 구조에 자신의 코드를 추가하는 방식으로 개발하게 됨. (개발자에 따라서 프로그램의 구조가 천차만별이 되는 상황을 막음)
- 개발에 필요한 구조가 이미 코드로 만들어 놓았기 때문에 반쯤 완성한 상태에서 필요한 부분을 조립하는 형태의 개발이 가능.
- 일정한 품질이 보장되며 개발시간이 단축 됨.
▶ 스프링은 경량 프레임워크: 특정 기능 위주로 간단한 jar 파일 등을 이용해서 개발이 가능하도록 구성된 프레임 워크
▶ 스프링 프레임워크의 차별성
- 복잡하지 않음: 일반적인 자바를 이용하기 때문에 진입 장벽이 높지 않고, 경량 프레임워크로 빠르게 엔터프라이즈급 시스템 작성 가능
- 프로젝트의 전체 구조를 설계할 때 유용: 웹이나 데이터베이스 영역에 국한되지 않고 전체를 설계하는 용도로 사용될 수 있음. 스프링 프로젝트가 대부분 Web에 국한되기는 하지만 근본적인 사상 자체는 OOP 구조를 뒷받팀하고 구조를 설계하는 사상임.
- 다른 프레임워크의 포용: 스프링은 전체 구조에 집중했기 때문에 특정 영역의 프레임워크와 굥존하는 방식으로 사용 가능. 기본 뼈대를 흔들지 않고 여러 종류의 프레임워크를 혼용해서 사용 가능.
- 개발 생산성과 개발 도구의 지원: 유지보수에 있어서도 xml 설정을 이용. STS, 이클립스, 인텔리제이 등의 플러그인 지원이 다른 프레임워크에 비해 빠른 업데이트가 되어서 개발 용이.
▶ 스프링 프레임워크의 역사
- Spring 2.5: 어도테이션 활용 설정을 도입해서 편리한 설정과 개발이 가능하도록 지원
- Spring 3.0: 별도의 설정 없이도 자바 클래스 만으로 설정 파일을 대신할 수 있게 지원. (Java Configuration)
- Spring 4.0: 모바일과 웹 환경에서 많이 사용되는 REST 형식의 컨트롤러 지원.
- Spring 5.0: Reactor를 이용한 Reactive 스타일의 개발 환경 지원
1.2 스프링의 주요 특징
▶ POJO(Plain Old Java Object) 기반의 구성
- 스프링 내부에는 객체 간의 관계를 구성할 때 별도의 API 등을 사용하지 않는 POJO의 구성만으로 가능하도록 제작되어 있음.
- 일반적인 자바 코드를 이용해 객체를 구성하는 방식을 그래도 사용할 수 있음.
- 중요한 이유: 코드를 개발할 때 개발자가 특정한 라이브러리에 종속적이지 않다는 것을 의미함. 가장 일반적인 형태로 코드를 작성하고 실행할 수 있기 때문에 생산성에도 유리하고, 코드에 대한 테스트 작업 역시 유연하게 할 수 있음.
▶ 의존성 주입(DI)
- 의존성(Dependency): 하나의 객체가 다른 객체 없이 제대로 된 역할을 할 수 없다는 것. A 객체가 B 객체 없이 동작이 불가능 한 것 = A가 B에 의존적.
- 주입(Injection): 외부에서 밀어 넣는 것. 필요한 객체를 얻기 위해 주체가 수동적인 것.
- 의존성 주입: 어떤 객체가 필요한 객체를 외부에서 밀어넣는다.
- 마치 음식점에서 대행업체가 알아서 식재료를 배송해 주는 것. 주입을 받는 입장에서 어떤 객체인지 신경 쓸 필요가 없고, 어떤 객체에 의존하든 자신의 역할은 변하지 않는다.
- ApplicationContext: 예시의 바깥쪽 도형처럼 필요한 객체를 생성하고 주입해주는 역할을 해주는 구조
- Spring으로 개발을 하면 객체와 객체를 분리해서 생성하고 엮는 작업을 하는 형태의 개발을 하게 됨.
- Bean: ApplicationContext 가 관리하는 객체를 일컫는 용어
- 빈과 빈 사이의 의존 관계를 처리하는 방식: XML 설정, Annotaion 설정, Java 설정 방식
▶ AOP(Aspect-Oriented-Programming) 지원
- 반복적인 코드를 줄이고 핵심 비즈니스 로직에만 집중할 수 있는 방법을 제공.
- 횡단 관심사: 시스템이 공통으로 가지고 있는 비즈니스 로직은 아니지만 반드시 처리가 필요한 부분.
- AOP: 횡단 관심사를 모듈로 분리하여 제작하는 패러다임.
- AOP 는 AspectJ 문법을 통해서 작성할 수 있음.
- 장점
1) 핵심 비즈니스 로직에만 집중해서 코드를 개발할 수 있음.
2) 각 프로젝트마다 다른 관심사를 적용할 때 코드의 수정을 최소화.
3) 원하는 관심사의 유지보수가 수뤙함.
▶ 트랜잭션의 지원
- 트랜잭션 관리를 어노테이션이나 XML로 설정할 수 있기 때문에 매번 상황에 맞는 코드를 작성할 필요가 없음.
▶ 객체에 대한 제어권 역전
- 객체의 제어권을 스프링에게 넘김.
- 인스턴스의 라이프사이클을 개발자가 아닌 스프링 컨테이너에게 넘임.
▶ 편리한 MVC 구조
▶ WAS의 종속적이지 않은 개발 환경
출처: 코드로 배우는 스프링 웹 프로젝트
'Tools > Spring' 카테고리의 다른 글
[Spring] Intellij로 Spring MVC Web 프로젝트 생성 방법 (Tomcat 서버, Log4j, Model and View 객체 설정) (0) | 2021.06.04 |
---|---|
[Spring] 스프링이 동작하는 과정 (의존성 주입 테스트) (0) | 2021.04.06 |
[Spring] 스프링 기초: 의존성 주입 설정 (0) | 2021.04.06 |