* 스프링 프레임워크
- 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)와 유용한 인터페이스를 제공
'SPRING' 카테고리의 다른 글
Controller 작성 - 일반 자료형 / 폼 / ArrayList (0) | 2020.08.24 |
---|---|
DI 의존성 주입 - xml 파일 분리하기 (0) | 2020.08.24 |
DI 의존성 주입 - xml 파일 <bean> <constructor-arg> (0) | 2020.08.24 |
DI 의존성 주입 - @Qualifier / @Resource (0) | 2020.08.23 |
DI 의존성 주입 - Java / @Component, @Autowired (0) | 2020.08.23 |