본문 바로가기
  • 개발 로그를 기록하며,
    복습하고 깊이를 더해갑니다.
728x90

Spring24

[SpringMVC] IoC (Inversion of Control) 💡 IoC란? IoC란 Inversion of Control의 줄임말이며, 제어의 역전이라고 한다. 스프링 애플리케이션에서는 오브젝트(빈)의 생성과 의존 관계 설정, 사용, 제거 등의 작업을 애플리케이션 코드 대신 스프링 컨테이너가 담당한다. 이를 스프링 컨테이너가 코드 대신 오브젝트에 대한 제어권을 갖고 있다고 해서 IoC라고 부른다. 따라서, 스프링 컨테이너를 IoC 컨테이너라고도 부른다. 💡 Bean과 스프링 IoC 컨테이너 스프링 IoC 컨테이너가 관리하는 객체들을 Bean 이라고 부릅니다. 스프링은 이러한 Bean들의 의존성을 관리하고, 객체를 만들어 주며, Bean으로 등록을 해 주고, 이렇게 만들어진 것들을 관리합니다. 개발자가 이 부분까지 신경쓰지 않아도, 프레임워크가 알아서 해 주는 것입.. 2023. 8. 19.
[SpringMVC] DI (Dependency Injection) 💡 의존성 주입(Dependency Injection) 이란? Spring 프레임워크는 3가지 핵심 프로그래밍 모델 (DI/IoC, PSA, AOP) 을 지원하며, 그 중 하나가 의존성 주입(Dependency Injection, DI) 이다. DI란 외부에서 두 객체 간의 관계를 결정해주는 디자인 패턴으로, 인터페이스를 사이에 둬서 클래스 레벨에서는 의존관계가 고정되지 않도록 하고 런타임 시에 관계를 동적으로 주입하여 유연성을 확보하고 결합도를 낮출 수 있게 해준다. 의존성이란 한 객체가 다른 객체를 사용할 때 의존성이 있다고 한다. public class Store { private Pencil pencil; } 그리고 두 객체 간의 관계(의존성)를 맺어주는 것을 의존성 주입이라고 하며 생성자 주입,.. 2023. 8. 19.
[SpringMVC] 데이터 변환 / 검증 💡 WebDataBinder 요청으로 넘어온 값들을 실제 객체에 binding하는 과정의 중간 역할 💡 1. 타입 변환 ex. sns=kakao&sns=daum&sns=insta는 String[]타입으로 저장되는데 binding된 파라미터가 String타입이면, “kakao, daum, insta”로 Spring이 자동 변환한다. 💡 2. 데이터 검증(Validation) 사용자 또는 서버의 요청(http request) 에서 잘못된 내용이 있는지 유효성 검사하는 단계 객체를 검증하기 위한 인터페이스. 객체 검증기(validator) 💡 BindingResult 타입 변환, 데이터 검증의 결과와 에러를 저장하여 에러가 발생하더라도 Controller에서 처리하도록 함. 매핑된 메서드의 파라미터 중, bi.. 2023. 8. 19.
[SpringMVC] 예외 처리 (Exception) 💡 예외처리 Controller레벨에서 처리 - @ExceptionHandler @RestController public class TestController { // 예외 핸들러 @ExceptionHandler(Exception.class) public String controllerExceptionHandler(Exception e) { return "/error/404"; } @GetMapping("hello1") public String hello1() { throw new TestException("hello1 에러 "); // 강제로 예외 발생 } } Global 레벨에서의 처리 - @ControllerAdvice @ControllerAdvice public class GlobalExcepti.. 2023. 8. 19.
[SpringMVC] Cookie & Session | 세션과 쿠키(Session, Cookie) 웹 서비스는 HTTP 프로토콜을 기반으로 사용자와 통신한다. HTTP 프로토콜은 클라이언트와 서버와의 관계를 유지하지 않는 특징인 Stateless 기반인 프로토콜이다. 이런 Stateless 상태를 해결하는 두 가지 방식이 있는데 세션(Session)과 쿠키(Cookie)다. 두 방식 모두 사용자와 서버의 연결 상태를 유지해주는 방법으로, 세션은 서버에서 연결 정보를 관리하는 반면 쿠키는 사용자에 측에서 연결 정보를 관리하는 데 차이가 있다. 쿠키(Cookie)란? 클라이언트를 식별할 때 사용. 클라이언트(브라우저) 로컬에 저장되는 이름과 값의 쌍으로 구성된 작은 정보 기본적으로 아스키 문자만 저장 가능하다. (한글은 URL인코딩 필요) 이외에도 도메인 정.. 2023. 8. 19.
[SpringMVC] redirect & forward 💡 forward Foward는 다음으로 이동 할 URL로 요청정보를 그대로 전달합니다. 그렇기 때문에 사용자가 최초로 요청한 요청정보는 다음 URL에서도 유효합니다. (URL변경 X) 시스템에 변화가 생기지 않는 단순 조회 요청(글 목록 보기, 검색)의 경우 forward로 응답하는 것이 바람직합니다. 💡 redirect Redirect의 경우 최초 요청을 받은 URL1에서 클라이언트에게 redirect할 URL2를 반환하고, 클라이언트에서는 새로운 요청을 생성하여 URL2에 다시 요청을 보냅니다. (URL변경 O) 처음 보냈던 최초의 Request와 Response 객체는 유효하지 않고 새롭게 생성됩니다. 시스템에 변화가 생기는 요청(회원가입, 글쓰기 등)의 경우에는 redirection을 사용하는 .. 2023. 8. 19.
728x90