본문 바로가기
💾 Backend/스프링

🧁스프링 부트 개념강의🧁

by 정람지 2023. 1. 30.

구름 강의 "스프링 부트 개념 정리" 끝내기 - 1.2주 목표

실패!


1일차

스프링의 핵심은?

스프링은 프레임워크이다.

스프링

= 자바 프레임워크

프레임워크

= 정해진 틀 안에서 동작

 

스프링은 오픈소스이다

오픈 소스 = 공개된 소스(무료)

내부를 뜯어고칠 수 있음 (기여)

 

스프링은 IOC 컨테이너를 가진다.

Inverdion of control = 제어의 역전

주도권이 스프링에게

 

class -> 설계도

object -> 실체화가 가능한 것

Instance -> 실체화 된 것

 

 

스프링은 DI를 지원한다.

싱글톤 관리

?

 


필터란 무엇일까요?

스프링은 엄청나게 많은 필터를 가지고 있다.

필터 : 문지기

권한 확인 후 걸러내기

 

스프링은 엄청나게 많은 어노테이션을 가지고 있다.

주석 (컴파일러가 무시함)

어노테이션:  컴파일러가 무시하지 않는 주석 @사용

 

@override 같은거!

그 WJconn 에서 구역 나눴던 거

 


2일차

MessageConverter

스프링은 MessageConverter를 가지고 있다. 기본값은 현재 json이다.

xml 을 원래 썼는데 현재는 json

중간 언어 같은 느낌/ 다른 두 영역의 소통(응답과 요청)을 위한

자바 오브젝트 => json => 파이썬 오브젝트 

 

MessageConverter :  json으로 바꿔주는 역할

 

인코딩 

UTF-8

스프링은 BufferReader와 BufferedWriter를 쉽게 사용할 수 있다.

 

 

스프링은 계속 발전중이다.


JPA란 무엇일까요?

JPA는  Java Persistence(영속성) Application programming interface

JPA = 자바 프로그래밍을 할 때 영구적으로 데이터를 저장하기 위해서 필요한 인터페이스

 

영속성 - 프로그램이 종료되더라도 사라지지 않는 데이터의 특성 

 

ram은 휘발성 - 프로그램 종료시 날아감

하드디스크는 비휘발성 - 영구 저장  <- 이것

 

API - 애플리케이션 프로그래밍 인터페이스(약속)


ORM이란 무엇일까요?

JPA는 ORM 기술이다

= Object Relational Mapping

자바에서 클래스를 만들어서 실행을 하면 데이터베이스에 테이블이 자동으로 생성되는 기법 

 

JPA는 반복적인 CRUD 작업을 생략하게 해 준다.

( Create Read Update Delete)

 

JPA를 사용하면

전송된 쿼리에 대한 응답있을 때 받을 데이터자바 오브젝트로 바꾸고, 연결된 세션을 끊고, 하는 등의 일련의 작업들을 하나의 함수로 제공하는 것 (반복적인 코드 X)


영속성 컨테스트란?

JPA는 영속성 컨텍스트를 가지고 있다.

컨텍스트(context) : 대상에 대한 모든 정보

 

JPA는 DB와 OOP의 불일치성을 해결하기 위한 방법론을 제공한다.(DB는 객체 저장 불가능)

므앩


OOP관점에서의 모델링

JPA는 OOP의 관점에서 모델링을 할 수 있게 해 준다. (상속, 콤포지션, 연관관계)

 

방언 처리가 용이하여 Migration하기 좋음.유지 보수에도 좋음.

JPA는 쉽지만 어렵다.

그냥 어려운데용


HTTP가 무엇일까요?

Hyper Text Transfer Protocol

인터넷에서 데이터를 주고받을 수 있는 프로토콜

리퀘스트/리스폰

URL 자원을 요청하는 주소

 

소켓 Socket: 운영체제가 가지고 있는 것!

소켓통신

 

http(문서를 전달하는 방식) 통신 - Stateless 방식 

연결고리를 통신 이후 바로 끊어 버림 ( 연속성 X, 부하 X)


톰켓이란?

소켓에서 http를 시스템콜 함

 

웹서버 : 아파치 + 톰켓

Tomcat(톰캣) : 자바 파일이 요청이 되면 컴파일해서 html 파일로 번역해서 돌려줌


서블릿 객체의 생명주기

자바 서블릿(Java Servlet)

웹페이지를 동적으로 생성하는 서버 측 프로그램 혹은 그 사양을 말함.

서블릿 컨테이너

서블릿을 관리해줌

특정한 파일 요청을 할 수 없다. 

요청시에는 무조건 자바를 거친다.


web.xml은 무엇일까요?

- ServletContext의 초기 파라미터 

- Session의 유효시간 설정

- Servlet/JSP에 대한 정의

- Servlet/JSP 매핑

-Mime Type 매핑

- Welcome File list 

- Error Pages 처리

- 리스너/필터 설정

- 보안

 

RequestDispatcher

필요한 클래스 요청이 도달했을 때 FrontController에 도착한 request와 response를 그대로 유지시켜준다.


DispatcherServlet

FrontController 패턴을 직접 짜거나 RequestDispatcher를 직접 구현할 필요가 없다. 왜냐하면 스프링에는 dispatchServlet이 있기 때문이다. DispatchServlet은 FrontControllor 패턴 + RequestDispatcher이다.

 

DispatchServlet이 자동생성되어질 때 수많은 객체가 생성된다. 보통 필터들이다. 해당 필터들은 내가 직접 등록할 수도 있고 기본적으로 필요한 필터들은 자동 등록 되어진다.

 


ApplicationContext

수많은 객체들이 applicationcontext에 등록된다. 이것을 ioc라고 한다. ioc란 제어의 역전을 의미

으ㅏㅇㄱ

모르겟ㅇ요

 


응답(response) 하는 방법

요청 주소에 따른 적절한 컨트롤로 요청

get 요청

해당 주소 요청이 오면 적절한 컨트롤러의 함수를 찾아서 실행한다.

 

응답

html 파일을 응답할지 Data를 응답할지 결정해야 하는데 html 파일을 응답하게 되면 ViewResolver가 관여하게 된다


솔직히 못 알아들었다.

뭐라도 시작해보자는 마음으로 하긴 했는데

 

빠른 시일 안에 무슨 이야기인지 다 알아들을 수 있게 되었으면 좋겠다..