프레임워크 : 뼈대나 근간을 이루는 코드들의 묶음
프레임워크를 이용한다는 의미는 프로그램의 기본 흐름이나 구조를 정하고, 모든 팀원이 이 구조에 자신의 코드를 추가하는 방식으로 개발하게 된다.
< 프레임워크의 장점 >
- 개발에 필요한 구조를 이미 코드로 만들어 놓았기 때문에, 실력이 부족한 개발자라 하더라도 반쯤 완성한 상태에서 필요한 부분을 조립하는 형태의 개발이 가능하다.
- 회사) 일정한 품질이 보장되는 결과물을 얻을 수 있다.
- 개발자) 완성된 구조에 자신이 맡은 코드를 개발해서 넣어주는 형태이므로 개발 시간을 단축할 수 있다.
<Spring 프레임워크의 차별성>
1. 복잡함에 반기를 들어서 만들어진 프레임워크
- 복잡함을 해결하기 위해서 나온 경량화된 프레임워크
- 일반적인 JAVA 클래스와 인터페이스를 이용하는 구조이기 때문에 진입장벽 높지 않았음
2. 프로젝트의 전체 구조를 설계할 때 유용한 프레임워크
- 어느 한 분야에 집중하지 않고, 전체를 설계하는 용도로 사용 가능
- 대부분 Web이라는 제한된 영역에서 많이 사용되지만, 근본적인 사상 자체는 OOP 구조를 뒷받침하고 구조를 설계하는 사상
3. 다른 프레임워크들의 포용
- 특정한 영역의 프레임워크와 공존하는 방식으로 사용 가능
- 다른 프레임워크들과의 통합을 지원하기 때문에 최소한의 수정 가능
- 기본 뼈대를 흔들지 않고 여러 종류의 프레임워크를 혼용해서 사용 가능
4. 개발 생산성과 개발도구의 지원
- 코드의 양 감소
- 유지 보수에 있어서도 XML의 설정 등을 이용
- STS, Eclipse, Intellij 등의 플러그인의 지원 역시 빠른 업데이트 됨
<스프링의 주요 특징>
- POJO 기반의 구성
별도의 API 등을 사용하지 않는 POJO (Plain Old Java Object) 구성만으로 가능하도록 제작
일반적인 Java 코드를 이용해서 객체를 구성하는 방식 그대로 스프링에서 사용 가능
- 의존성 주입(DI)를 통한 객체 간의 관계 구성
* 의존성 주입?
의존성(Dependency) : 하나의 객체가 다른 객체 없이 제대로 된 역할을 할 수 없다는 것을 의미.
A객체가 B객체 없이 동작이 불가능한 상황을 'A가 B에 의존적이다'
주입(Injection) : 외부에서 '밀어넣는 것'
=> 필요한 객체를 얻기 위해서 주체가 수동적
의존성 주입 = '어떤 객체가 필요한 객제를 외부에서 밀어 넣는다'
Why?
주입을 받는 입장에서는 어떤 객체인지 신경 쓸 필요가 없다, 어떤 객체에 의존하든 자신의 역할은 변하지 않는다.
스프링에서는 ApplicationContext 라는 존재가 필요한 객체들을 생성하고, 필요한 객체들을 주입하는 역할을 해주는 구조
ApplicationContext가 관리하는 객체들 = 빈(Bean)
빈과 빈 사이의 의존관계를 처리하는 방식 = XML 설정, 어노테이션 설정, Java 설정 방식
- AOP(Aspect-Oriented-Programming) 지원
대부분의 시스템이 공통으로 가지고 있는 보안이나 로그, 트랜잭션과 같이 비즈니스 로직은 아니지만,
반드시 처리가 필요한 부분을 스프링에서는 '횡단 관심사'라고 한다.
AOP는 이러한 횡단 관심사를 모듈로 분리하는 프로그래밍의 패러다임
스프링은 AOP를 AspectJ의 문법을 통해 작성
-1) 핵심 비즈니스 로직에만 집중해서 코드 개발 가능
-2) 각 프로젝트마다 다른 관심사를 적용할 때 코드의 수정 최소화
-3) 원하는 관심사의 유지보수가 수월한 코드 구성
- 편리한 MVC구조
- WAS의 종속적이지 않은 개발 환경
출처 : 코드로 배우는 스프링 웹 프로젝트(개정판) - 구멍가게 코딩단
'코드로 배우는 스프링 웹 프로젝트 > Part1.스프링 개발 환경 구축' 카테고리의 다른 글
04 MyBatis와 스프링 연동 (0) | 2020.09.24 |
---|---|
03. 스프링과 Oracle Database 연동 (0) | 2020.09.13 |
02. 스프링의 특징과 의존성 주입3 (0) | 2020.09.13 |
02. 스프링의 특징과 의존성 주입2 (0) | 2020.09.10 |