스프링 프레임워크 개론(기본개념,용어)
by ash
참고블로그1: https://jojoldu.tistory.com/28
참고블로그2: https://blog.naver.com/eun033/140206797670
참고블로그3:https://m.blog.naver.com/PostView.nhn?blogId=acornedu&logNo=221128616501&proxyReferer=https%3A%2F%2Fwww.google.com%2F
참고블로그4:https://m.blog.naver.com/jhc9639/220967034588
스프링?프레임워크?
-스프링은 자바를 통한 웹어플리케이션 구현을 편하게 도와주는 프레임워크
-프레임워크란 말 그대로 뼈대. 개발을 편리하게 하기 위해 개발자들이 미리 만들어 놓은 뼈대이며, 우리들은 그걸 편하게 갖다 쓰면 된다.
-즉, 스프링 프레임워크란 자바를 통한 웹 어플리케이션을 쉽게 구현할 수 있도록 개발한 것
-만약 프레임워크 없이 개발을 한다면 모두 제각각의 스타일대로 개발을 하고, 충돌나는 부분이 있으면 갈등 요소도 많이 생길 것. 프레임워크라는 틀이 있다면 그런 충돌을 최소화할 수 있고 프레임워크 규칙에 맞춰서 협업할 수 있을 것이다.
-스프링은 웹 프레임워크가 아니라, 자바기반 프레임워크이며 여러 모듈로 구성되어 있다. 웹어플리케이션을 만들기 위해 등장한 모듈이 SpringMVC이다.
-라이브러리 vs 프레임워크
-‘라이브러리 + 클래스 = 프레임워크’라고 보면 된다!
-스프링 관련 개념, 용어 정리
1. WAS(Web Application Server)
- 애플리케이션과 서버 환경을 만들어 동작시키는 기능을 제공하는 소프트웨어 프레임워크(위키피디아 참고).
-Web서버와 WAS서버의 차이점?
-
Web서버 : 브라우저 클라이언트로부터 HTTP 요청을 받아 HTML등의 웹문서에 반응하는 프로그램. HTTP 프로토콜 기반으로 하여 브라우저 요청을 서비스 하는 기능 담당 ->HTML문서같은 정적 컨텐츠를 처리하는 서버
-
WAS서버 : 동적 서버 콘텐츠를 수행(WEB서버와 구별) ->JSP 등을 읽고 처리하여 동적 컨첸츠를 처리하는 서버
-
WAS서버에는 최근 WEB서버가 포함되어 있음(아파치 톰캣)
-
JSP와 서블릿을 실행시킬 수 있는 소프트웨어 -> 웹컨테이너
-
WAS = WEB서버 + WEB컨테이너라고 이해(틀렸을지도?)
-
WEB서버(예:Apache)에서는 정적처리를 하고, WAS서버(예:Tomcat)에서는 동적처리를 함. 왜? 분산처리를 하여 서버 부담을 줄이기 위해서이다.
-
Apache Tomcat은 Apache + Tomcat의 합작
(사진출처:https://minjookwon.files.wordpress.com/2015/05/web-browser.gif?w=640)
2. Servlet
-
서버에서 웹페이지 등을 동적으로 생성하거나 데이터 처리를 수행하기 위해 자바로 작성된 프로그램. 자바로 작성된 프로그램의 일종.
-
서블릿은 자바코드안에 HTML을 포함(JSP는 HTML문서 안에 JAVA코드 포함)
-
비슷한 기술은 PHP,ASP
-
과거에는 서블릿만으로 웹페이지를 만들었음(현재에는 JSP기술과 같이 사용)
3. JSP(Java Server Page)
- HTML만으로 웹서버와 관련된 여러 처리가 힘들어 JSP 기술 도입
-
서블릿 단점을 보완하기 위해 만들어진 서블릿 기반 스크립트 기술
- JSP 기술은 프리젠테이션 층, 즉 뷰 담당
- Servlet 기술은 사용자 요청을 받아 분석하고 비지니스 층과 통신하여 데이터를 주고 받아 프리젠테이션 층으로 응답하는(넘기는) 컨트롤러 층 담당
4. MVC Pattern
- 디자인패턴 중 하나
- Model, View, Controller의 약자
- 하나의 프로그램,프로젝트에서 각각의 역할에 맞게 분담한 것
- MVC의 큰 흐름은 클라이언트의 요청이 컨트롤러로 넘어가고, 컨트롤러는 모델을 통해 데이터를 받아오며, 그 정보를 바탕으로 뷰를 제어하여 클라이언트 측에 보여줌
5. DI(Dependency Injection)
-
의존성 주입으로 번역
-
프로그래밍에서 구성요소 간의 의존 관계가 소스코드 내부가 아닌, 외부의 설정파일(스프링 컨테이너)을 통해 정의되게 하는 ‘디자인패턴’중 하나(위키백과 참고)
-
기존방식대로 객체(빈)를 new연산자를 통해 생성하는 것이 아니라, 스프링컨테이너라는 친구에게 대신 생성해주고 라이프사이클도 관리해달라고하며 맡긴 후, 나중에 필요할 때 @Autowired 등으로 불러와서 사용하는 것
-
인스턴스 생성 및 관리를 내가 아니라, 컨테이너로 바뀌기 때문에 ‘제어의 역전(IoC)’이라는 것이 발생
-
이를 통해 객체간의 결합도가 낮아지기 때문에, 한 객체가 변한다고 다른 객체가 변할 위험성 등이 낮아짐 + 재사용성도 증가
-추후 계속 작성 예정-
Subscribe via RSS