📣Spring
Spring
스프링이란 무엇인가?
- JAVA의 웹사이트 개발을 위한 웹 프레임워크이다.
- JAVA의 활용도가 높아졌고 프로젝트의 규모도 높아짐에 따라 JAVA를 활용한 기술들도 동시에 발전했고([JSP](#), [MyBatis](#), [JPA](#)) 등 )Spring은 이 기술들을 편하게 사용하기 위해 만들어진 것이다.
- Spring은 중복코드의 사용을 줄여주고, 비즈니스 로직을 더 간단하게 만들어주는 역할을 한다.
- Spriing은 다른 프레임워크와도 사용성이 좋아 다른 프레임워크와 횬용이 가능하며, 다른 사람의 소스 코드를 참조하여 쓰기 편리한데 오픈소스를 조금 더 효율적으로 가져다 쓰기 좋은 구조이다.
- Spring을 한줄로 정리하면 **자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크** 와 같다.
프레임워크(Frame Work)란?
- 프레임워크(Frame Work)란 자주 쓰일만한 기능들을 한데 모아 놓은 유틸(클래스)들의 집합 이다.
- 즉 프레임워크는 설계의 기반이 되는 부분을 확장 가능한 기반 코드와 사용자가 이 코드를 입맛대로 수정, 확장하는데 필요한 라이브러리 이 두가지 요소가 통합되어 제공되는 형태이다.
- 프레임워크는 기본적인 설계나 필요한 라이브러리는 알아서 제공해줄테니 개발자는 만들고 싶은 기능을 구현하는데 집중할수 있게 도와주려는 취지해 만들어진 툴이라고 말할 수 있다.
- 개발자가 구현하고자 하는 기능을 쉽게 제공해줄수 있다는 점에서 라이브러이와 프레임워크는 비슷한 면이 있다.
프레임워크와 라이브러이의 차이점.
- 라이브러리란 개발자가 프로그램을 짜다가 필요한 순간에 인지하고 만들어진 기능을 가져다 쓰는 것을 말한다. 즉 라이브러리는 프로그램 기능 구현에만 쓰인다.
- 하지만 **프레임워크는 이미 필요한 라이브러이와 함께 구현에 필요한 설계도 틀을 함께 제공해준다.**
- 즉 프레임워크는 움직이지않고 기반이되는 설계도 틀을 제공하여 개발자들이 신경쓰지 않아도 빠르게 기능을 확장하거나 유지보수 할 수 있게 구조대한 가이드라인을 제공한다.
- 프레임워크는 우리가 프레임워크에서 개발을하는 것이며, 규칙이 있어(설계도 틀) 그 규칙안에서 개발을 하며 이미 호출된 라이브러리로 편한 개발환경을 조성해주는 것이며, 라이브러리란 우리가 필요할때 마다 찾아 쓰는 것이라 볼 수 있다.
스프링의 주요 특징.
- IOC(Inversion Of Control, 제어반전)
- 기존의 프로그래밍 방식에선 라이브러리를 호출하여 코드에 포함시켜 프로그램을 실행 시켰지만 스프링에서는 지원하는 형식에 맞게 프로그램을 작성하면 프레임워크에서 사용자가 작성한 코드를 호출해서 사용하는 방식으로 제어의 권한이 역전된 모습을 보여준다.
- DI(Dependency Injection, 의존성 주입)
- 프로그램 구성요소간의 의존 구조를 외부 파일에서 정의해준다.
- 각 요소 또는 서비스 사이에 의존성이 존재하는 경우 스프링에서 의존 관계를 정의, 외부파일을 통해 설정
- 설정파일을 분리하기 때문에 유지보수가 쉬워지며 각 구성요소간 결합성이 낮아지게된다.
- 각 객체가 독립적으로 존재, 연결 자체는 스프링에서 지원한다.
- AOP(Aspect Object Programming, 관점 지향 프로그래밍)
- 관점에 따라 각각의 기능을 불히하여 프로그램 하는것이 가능해진다.
- 비즈니스 로직 등을 다른 모듈로 분리하여 따로 관리할수있다.
- 스프링에서는 서로 다른 관점을 조합하는 기능을 제공한다.
- 이러한 방식은 요지보수가 수월하며 각각의 관전에 최적화된 프로그래밍이 가능해진다.
- POJO(Plain Old Java Object, POJO방식)
- 기존의 일반적인 Java 코드를 이용해서 프로그래밍이 가능하다.
- 기존의 프레임워크의 방식에선 미리 설계되어있는 인터페이스나 클래스를 상속받아 무거운 객체들을 만들어야만 했는데, 그럴 필요가 없어 일반적인 Java코드로만으로 객체를 구성할 수 있게 된다.
- 따라서 더 유연한 프로그래밍이 가능해지며 가볍고 생산성이 높아진다.
Spring , Spring Boot 차이
Spring MVC
MVC란 Modle, View, Contrller 를 분리한 디자인 패턴을 말한다.
- Model
- 애플리케이션의 상태(data)를 나타낸다.
- 일반적으로 POJO로 구성된다
- **JAVA BEANS**
- View
- 디스플레이 데이터 또는 프리젠테이션
- Model data의 랜더링을 담당하며, HTML output을 생성한다
- **JSP, Thymleaf, Freemaker 등**
- Controller
- View와 Model 사이의 인터페이스 역할
- Model/View에 대한 사용자 입력 및 요청을 수신하여 그에 따라 적절한 결과를 Model에담아 View에 전달한다.
- 즉, Model Object와 Model을 화면에 출력할 View Name을 반환한다.
- Controller --> Service --> Dao --> DB
- **Servlet**
위 3가지를 개발자가 직접 설정해야하며 라이브러리를 가져오고 그에 따른 설정들이 무수하게 따른다. 즉 환경설정에 개발자는 많은 시간을 투자해야하며 각각의 라이브러이에대해 버전관리가 필요 할 수 도 있다.
SpringBoot
스프링 부트의 공식 사이트에서는 이렇게 나와있다.
Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can "just run".
"단지 실행만 해라!"
스프링부트는 이렇듯 스프링의 단점인 수 많은 설정들을 안하고 실행만 하게끔 도와준다.
참고사이트
https://gmlwjd9405.github.io/2018/12/20/spring-mvc-framework.html
https://jerryjerryjerry.tistory.com/62
'backEnd > Java' 카테고리의 다른 글
Spring (Controller, Service, Dao 의 역할) (0) | 2022.05.31 |
---|
댓글