본문 바로가기

SPRING

스프링 프레임워크 정의 / 특징

* 스프링 프레임워크

 

- Java/JSP 기반의 웹 프레임워크

- 프로그램을 쉽게 할 수 있도록 미리 뼈대를 만들어 놓은 것 -> 살만 붙이면 되게끔

- 개발자가 원하는 기능을 편하게 구현할 수 있도록 다양한 기능 제공

- 자바로 만들어진 여러 가지 도구의 집합 = 라이브러리

- JVM 위에서 돌아가며, 아파치 라이선스 2.0을 따르는 오픈 소스 프레임워크
- 한국 전자정부 표준프레임워크의 기반 기술이며 한국정보화진흥원에서는 공공기관의 웹 서비스 제공 시 스프링을 권장

- 환경설정이 까다로운 편이나 설정을 마친 시점부터는 개발 속도가 기하급수적으로 상승하기 때문에 중대형 프로젝트에 적합

 

cf) 그 밖에 다른 언어에서 사용하는 프레임워크

자바 -> 스프링 프레임워크

파이썬 -> 장고 프레임워크

php -> 라라벨 프레임워크

asp -> 닷넷 프레임워크

c# -> 닷넷 프레임워크

 

 

*특징

1) POJO(Plain Old Java Object) 방식

- POJO는 Java EE를 사용하면서 해당 플랫폼에 종속되어 있는 무거운 객체들을 만드는 것에 반발하며 나타난 용어

- Java EE를 사용할 때에 비해 특정 인터페이스를 직접 구현하거나 상속받을 필요가 없어 기존 라이브러리를 지원하기가 용이, 가벼움

- 즉, 기존 자바에서 사용하던 상속을 없앤다, 왜냐? 서블릿에 있는 정보 중에 안 쓰는 것이 더 많으니까 쓸데없이 전부 다 상속하지 마!

- 딱 필요한 것만 받아서 쓰자. 예전의 기본적인 자바 방식으로 돌아가자.

- 내 생각 : 상속 받을 필요가 없다는 것? 왜? 의존성 주입으로 편하게 해결하니까!

 

2) 관점 지향 프로그래밍 (Aspect Oriented Programming, AOP)

- 로깅, 트랜잭션, 보안 등 여러 모듈에서 공통적으로 사용하는 기능을 분리하여 관리

- 공통 기능이 따로 구현되어 있으니, 나중에 필요할 때 가져다 쓰자.

 

3) 의존성 주입 (Dependency Injection, DI)

- 프로그래밍에서 구성요소 간의 의존 관계가 소스코드 내부가 아닌 외부의 설정파일을 통해 정의되는 방식

- 코드 재사용을 높여 소스코드를 다양한 곳에 사용할 수 있으며 모듈 간의 결합도를 낮춰줌

- 의존성이 존재하는 경우 스프링 프레임워크가 알아서 서로 연결해줌

- 클래스들간에 서로를 필요로 하는 관계, 없으면 돌아가지 않음

- JSP에서는 의존 관계에 따라 필요한 클래스들을 만들어줘야 하지만

  스프링에서는 최종 단계의 클래스만 만들면 알아서 필요한 클래스들을 생성해 줌 -> 왜? 이미 의존성 주입해줬기 때문에

 

4) 제어 반전 (Inversion of Control, IoC)

- 기존 자바처럼 객체를 필요할 때마다 생성하는 것이 아니라, 미리 생성해놓고 필요할 때마다 가져다 쓰는 방식

- 제어권이 프레임워크에게 있어 필요에 따라 스프링 프레임워크가 사용자의 코드를 호출

 

5) 생명주기

- 스프링 프레임워크는 Java 객체의 생성, 소멸을 직접 관리하며 필요한 객체만 사용

- 다양한 서비스 (myBatis와 같은 데이터베이스 처리 라이브러리나 tiles)와 유용한 인터페이스를 제공