스프링이란

DSA Backend 과정 내용 정리
- 자바 기반의 애플리케이션을 개발하기 위한 오픈소스 프레임워크
스프링의 주요 특징
- DI (의존성 주입) : 객체간의 관계를 개발자가 직접 생성하지 않고 스프링 컨테이너에게 위임한다.
- IoC (제어의 역전) :
- AOP(관점 지향 프로그래밍) : 공통관심사 (트랜잭션, 로깅, 보안)를 분리하여 관리한다.
스프링부트란?
- 스프링 프레임워크를 좀 더 쉽게 사용할 수 있도록 만든 프레임워크
- 특징
- 자동 설정
- 내장 웹서버 (Tomcat)
- 독립 실행 환경 (war -> jar)
스프링 빈
- 스프링에서 관리하는 객체를 빈(Bean)이라고 한다.
- 스프링 빈 등록 방법
- @Component
- @Controller, @Service, @Repository
- @Configuration 을 사용하여 @Bean을 메소드 레벨에 지정
의존성 주입(DI)
- 객체간의 의존 관계를 스프링 컨테이너가 자동으로 주입해주는 개념
- DI의 방법 : 필드 주입, 세터 주입, 생성자 주입(권장)
HTTP 요청
- 클라이언트(웹 브라우저)가 서버에 데이터를 요청하는 방식
- GET, POST, PUT, DELETE, PATCH, …
HTTP 응답
- 서버가 클라이언트의 요청을 처리하고 결과를 반환하는 방식
- 응답코드: 200, 404, 500, 401, 403, 302, …
포워드와 리다이렉트
- 포워드 : 서버 내부에서 페이지를 이동, URL 변경이 안됨
- 리다이렉트 : 새로운 요청을 생성하여 다른 URL로 이동, URL이 변경됨
쿠키와 세션
- 쿠키 : 클라이언트에 저장, 보안이 취약
- 세션 : 서버에 저장, 주로 로그인 정보 보관
유효성 검증
errors.properties
필터와 인터셉터
- 필터 : HTTP 요청 -> WAS -> 필터1 -> 필터2 -> 필터3 서블릿 -> 컨트롤러
- 인터셉터 : HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 인터셉터1 -> 인터셉터2 -> 인터셉터 3 -> 컨트롤러
응답코드 302 : 리다이렉트 되었다는 의미
게시판 -> 글 조회 -> /posts/2 -> 2번 아이디를 가진 글을 내 보낸다. /posts/3 -> 3번 게시글은 존재하지 않ㅡ다. -> NoSuchElementException 발생 -> 서버 내부 오류라고 상태코드 500 발생 -> 하지만 이는 클라이언트가 없는것을 요청하여서 발생한 것 -> 404 오류로 명시적으로 나타내 줘야함
스프링 시큐리티 (보안)
- 로그인, 로그아웃, 권한관리, 패스워드 암호화, 로그인 실패, 로그인 성공