개발자 끄적끄적
Spring 설치 본문
<스프링(Spring)>
- 경량화된 프레임워크(javaEE)
- 스프링의 3대 요소
- DI(Dependency Injection) : 의존성 주입
- 다른 프레임워크와 차별화되어 제공하는 의존관계 주입기능으로,
객체를 직접 생성하는게 아니라 외부에서 생성한 후
주입시켜주는 방식이다
- 모듈 간의 결합도가 낮아지고 유연성이 높아진다
- AOP(Aspect Oriented Programming) : 관점지향 프로그래밍
- 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로
나누어서 보고 그 관점을 기준으로 각각 모듈화
*모듈화 : 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것
- MVC(Model, View, Controller의 분리)
- Spring에서 제공하는 웹 모듈로 Model, View, Controller 세가지의
구성요소를 사용해 사용자의 다양한 HTTP Request을 처리하고
단순한 텍스트 형식의 응답부터 REST 형식의 응답은 물론,
View를 표시하는 html을 return 하는 응답까지 다양한 응답을
할 수 있도록하는 프레임
*의존성 : 외부환경(즉, 데이터가 발생되는 상황)이 바뀌었을 때
- 스프링 플러그인 설치
- Spring boot 유형의 프로젝트 생성
- 라이브러리 추가
- jstl, tomcat-embed-jasper
resources.static 안에 js, css가 들어가야하고
webapp/WEB-INF/view안에는 jsp가 들어가야한다
<스프링 플러그인 설치>
1. 프로젝트 우클릭>Close Project
2. Help>Eclipse Marketplace>검색창 'spring'>Spring 4.~>intall
3. restart(재부팅)
4. pom.xml안에 라이브러리(jstl, tomcat) 복사하기
<Gradle>
- 라이브러리를 자동적으로 관리
<Maven>
- 라이브러리를 수동으로 관리
<WEB-INF>
- 시스템 내부에서는 접근할 수 있지만 외부에서는 접근할 수 없다
- 보안상 외부에서 접근 불가
<application.properties가 안나올 때(오류)>
Help>Install New Software>Work with:>Spring Tool Suit 4 - http~
>Select All>설치
<Spring MVC의 구조>
- Spring MVC : 웹 어플리케이션을 유연하고 확장 가능하게 만들어 준다
1. DispatcherServlet(Front Controller) : 제일 앞 단에서 HTTP Request를 처리하는 Controller
- HTTP Request가 왔을 때 DispatcherServlet인 Servlet이 HTTP Request를
처리할 Controller를 지정한다
2. Handler(Controller) : HTTP Request를 처리해 Model을 만들고 View를 지정
- DispatcherServlet에 의해 배정된 Controller는 HTTP Request를 처리하고,
HTTP Request의 메시지를 처리해 필요한 데이터를 뽑아 Model에 저장한다
- HTTP Request에 따라서 HTTP가 보여줄 View Name을 지정
- View에 Model의 데이터를 세팅하지는 않는다
3. ModelAndView : Controller에 의해 반환된 Model과 View가 Wrapping된 객체
- Model : Map<String, Value> 형태의 데이터 저장소
- Model은 Map 자료 구조로, HTTP Request 속의 데이터를 파싱해
Key-Value 쌍으로 만들어 저장한다
이 Model은 이후에 View를 그리기 위해 사용된다
- Model(=Data) And View(=웹페이지)
4. ViewResolver : ModelAndView를 처리하여 View를 그리기
- Model에 저장된 데이터를 사용해 View를 그려준다
- View는 사용자에게 보여줄 완성된 View이며, 여기서 그려지는
View는 그대로 유저에게 반환된다
- 우리가 특정한 URI로 들어갔을 떄 우리에게 보여지는 View가 이곳에서
만들어지는 View이다
'Spring' 카테고리의 다른 글
Annotation 용어 정리 (0) | 2023.03.06 |
---|---|
AOP 작업 (0) | 2023.03.04 |
Spring 기본개념 (0) | 2023.03.04 |