Today I Learned
(24.05.14)[5주차] Spring 입문 강의 01
Spring 입문에 대해서 배우고 있는데 다뤄야하는 부분이 너무 방대해서 Java처음 배운 것과 거의 맞먹는다곤 느껴진다.
괜히 기업들이 취업 요건에 Java언어 활용자 중 Spring / Spring Boot 경험 여부를 따로 확인을 하려고 하는지 알수 있다.
하지만, SQL을 하기도 했었고 DB 활용을 나름대로 해보고 싶기 때문에 쉽지는 않지만 재밌게 학습을 진행한듯
일단 블로그에는 간단하게 정리를 하면서 복습하려고 한다.
Spring 입문 강의 간단정리
- 이를 기반으로 하여 두번째 강의 내용은 JPA 중심이기 때문에 이를 유의 하여 학습
- 모든 Spring 내용은 처음 학습이므로 자세하게 Notion의 DB화와 블로그의 정리를 통하여 학습을 복습
더보기
그레이들 Gradle
- 빌드 자동변환 시스템
build.gradle
- Gradle 기반의 빌드 스크립트
- 소스 코드를 빌드하고 라이브러리들의 의존성을 쉽게 관리
- 외부 라이브러리들을 dependencies 부분에 작성하면 Gradle이 해당 라이브러리들을 Maven Repository 와 같은 외부 저장소에서 자동으로 다운로드
API
- API(application programming interface)는 다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙, 약속
RESTful API
- REST(Represnetational State Transfer) API 로 HTTP 에 의거하여 API가 잘 설계된 API
WAS
- Web server은 정적 데이터(html 문서)를 브라우저로 전송하는 역할
Apache Tomcat
- Web server + WAS 를 합친 서비스
- 정적 데이터 처리 + 동적인 데이터 처리가 효율적으로 가능하게 함
SpringBoot & Spring
Spring Framework
- AOP, IoC/DI 등과 같은 아주 강력한 핵심 기능을 활용할 수 있지만 엄청난 양의 xml 설정이 필요 → SpringBoot의 등장
SpringBoot
- xml 대신 annotation을 통해 간편하게 설정
- 기본 설정 값을 default로 자동 설정
- 외부 라이브러리, 하위 프레임워크 의존성 관리 쉬워짐
- 내장 Apache Tomcat
- Spring에서는 직접 넣어야하나, SpringBoot에서는 기본 내장형이 있기 때문에 굳이 Setting 없이 바로 사용 가능
MVC 디자인 패턴
- Model-View-Controller 소프트웨어 디자인 패턴
- 구성 요소를 분리해 코드 재사용, 유지보수성 향상
- 개발자간 협업 용이한 패턴
- Model
- Date , Business Logic
- View
- User Interface
- Controller
- Model-View 사이에서 조정 및 제어
Spring Web MVC
- Spring에서 DispatcherServlet이 MVC 디자인 패턴을 통해 HTTP 요청을 처리하는 것
- 개발할 때마다 HTTP 구조를 가져올 수 없기 때문에 Servlet이 분석해서 객체에다가 넣어주는 것
Servlet 서블릿
- SpringBoot에서 annotation으로 설정한 것 중에 해당 Servlet에 대한 정보를 찾아서 매칭을 시켜 Serlvet 해당 서비스를 실행
Front Controller의 DispatcherServlet
- API마다 각각 Servlet 클래스를 맞춰서 구현해야하나 이것을 효율적으로 해결하기 위한 Front Conrtroller 패턴 방식
- 직접 Servlet을 구현하지 않아도 DispatcherServlet에 의해 간편하게 HTTP 요청을 처리
- 유사 API를 묶어서 하나 Controller로 묶어서 처리
RestConroller
- @Controller + @ResponseBody
- 단, html의 View를 반환해야할 때는 Conroller를 사용해야
Server 에서 JSON → String
직접 변환 : text/html 타입
- 알아서 똑같이 바뀜
JAVA 내부 변환 기능 : application/json 타입
- new 객체로 만들어서 반환을 해줘도 알아서 Jason으로 바꿔서 응답
Jackson
- JSON 데이터 구조 처리 라이브러리
- Object ↔ JSON String
Object → JSON
- **ObjectMapper 를 활용**
- getter가 반드시 필요
- writeValueAsString 메서드 활용
JSON → Object
- **ObjectMapper 를 활용**
- ***해당 클래스 데이터에 대해 기본생성자, getter/setter 필요
- readValue 메서드를 활용
- **필드명을 반드시 일치 시켜서 매핑 해줘야하는 것
Client로 부터 JSON을 가지고 오는 방식
Path Variable
Path Variable 방식
- 서버에 보내려는 데이터를 URL 경로에 추가해서 JSON을 @PathVariable을 통해 가지고 오는 것
- 직접 데이터를 JSON을 가져오는 방식
Request Param
Request Param 방식
- 쿼리 스트링 방식
- ?로 구분해서 JSON을 가지고 오는 것을 @RequestParam으로 바꿔서 가지고 오는 것
form 태그 POST 방식
- POST 방식으로 넘어올 때 사용
- body 부분이 templates의 html에 form 으로 지정이 되어 있음
HTTP 데이터를 객체로 처리
@ModelAttribute
form 태그 POST 방식
- 원래 쿼리 스트링 body로 들어온 값을 객체(위에서는 Star)에 매핑을 해서 객체로 가지고 오는 방식
Query String 방식
- 만약 여러개의 ?달고 넘어가게 오면 힘들기 때문에 객체로 한번에 받아오기 위한 방식
- 단, 객체내에 들어온 값을 등록하게끔 하는 Setter 또는 오버로딩 생성자가 존재 해야만 하기 때문에 반드시 확인
@RequestBody
- body 부분에 JSON 방식으로 데이터가 넘어오는 경우에 객체로 변환
- JSON일 때는 꼭 @RequestBody 써줘야
'Today I Learned' 카테고리의 다른 글
(24.05.17)[5주차] Spring 입문 마무리(SpringBoot JPA @ExceptionalHandler) (0) | 2024.05.17 |
---|---|
(24.05.16)[5주차] Spring 입문 강의 02 (0) | 2024.05.16 |
(24.05.13)[5주차] 런타임 이슈 by NumberFormatException 예외 (0) | 2024.05.13 |
(24.05.10)[5주차] n진수로 바꾸기 & StringBuffer (0) | 2024.05.10 |
(24.05.09)[4주차] 유클리드 호세법 최대공약수, 최소공배수 (0) | 2024.05.09 |