spring
-
Spring Boot - HandlerMapping의 동작 방식Framework & Library/Spring Boot 2023. 1. 30. 14:49
HandlerMapping의 동작방식 HandlerMapping의 역할 HandlerMapping은 클라이언트로부터 받은 요청을 처리하기 위해 적절한 handler를 찾아온다는 것을 들어보았을 것이다. 구체적으로 HandlerMapping은 사용자 요청의 URL과 매칭되는 handler를 선택하는 역할을 수행한다. 이번 게시글에서는 HandlerMapping이 어떠한 방식으로 요청에 대한 handler를 찾는지 알아보겠다. Spring MVC의 요청 처리 흐름 HandlerMapping의 역할을 살펴보기 전에, Spring MVC에서 요청이 어떠한 순서로 처리되는지 알아보겠다. 1. 우선, front-controller의 역할을 하는 DispatcherServlet이 요청을 받는다. 2. Dispatch..
-
Spring Boot - JPAFramework & Library/Spring Boot 2021. 12. 1. 14:37
JPA의 정의 JPA란? JPA는 Java Persistence API의 약자로 Java에서 관계형 DB를 사용하기 위한 양식을 정의한 인터페이스이다. 말 그대로 인터페이스이기 때문에, 어떤 코드가 구현되어 있는 것은 아니다. 단지, Java라는 객체 지행 프로그래밍 언어에서 관계형 DB를 객체 지향적으로 설계하기 위한 모범 사례를 JPA라고 하는 것이다. 즉, Java 진영에서 ORM 기술 표준으로 애플리케이션과 JDBC 사이에서 동작하는 것이다. 여기서 ORM이란, Object Relationship Mapper의 약자이다. JDBC나 Spring JDBC, iBatis 같은 경우 DB 처리를 위해 로직을 별도로 작성하고, 이를 SQL 코드를 통해 질의하였는데, ORM은 SQL 코드를 작성하지 않고,..
-
Spring Security - Authentication 객체가 가질 수 있는 2가지 타입Framework & Library/Spring Security 2021. 10. 3. 15:51
Authentication 객체가 가질 수 있는 2가지 타입 ㆍ 로그인 진행이 완료되면 기존의 Sesson 공간에 Security Session 공간이 만들어진다. ㆍ Security Session에 들어갈 수 있는 정보는 Authentication 객체여야 한다. ㆍ 또한 Authentication 객체가 가질 수 있는 타입은 UserDetails와 OAuth2User 2가지 타입이다. ㆍ UserDetails와 OAuth2User 2가지 타입을 통해서 로그인을 한 사용자의 정보를 얻을 수 있다. 일반 로그인 사용자 정보 받기 IndexController 클래스 수정 @GetMapping("/test/login") @ResponseBody /* 일반 로그인 사용자에 대한 정보 받기 */ public S..
-
Spring Security - 프로젝트 생성 및 환경설정Framework & Library/Spring Security 2021. 9. 30. 14:21
MySQL 사용자 및 DB생성 create user 'qlsdud'@'%' identified by 'qlsdud0604'; GRANT ALL PRIVILEGES ON *.* TO 'qlsdud'@'%'; create database security; use security; ㆍ 위에 sql 문을 차례대로 실행해서 사용자 및 DB를 생성한다. Spring Boot 프로젝트 생성 ㆍ 위 사진과 같은 의존성을 포함한 Spring Boot 프로젝트를 생성한다. application.yml 설정 server: port: 8080 servlet: context-path: / encoding: charset: UTF-8 enabled: true force: true spring: datasource: driver-..
-
Spring Boot - AOPFramework & Library/Spring Boot 2021. 9. 23. 18:04
AOP AOP의 필요성 - 모든 메서드의 호출 시간을 측정하고 싶은 경우를 생각해본다. - 해결 방법은 위 사진과 같이 각 계층마다 시간을 측정하는 로직을 작성하는 방법이 있다. - 이때, 시간을 측정하는 로직과 핵심 비즈니스의 로직이 섞여서 코드가 복잡해지고 유지보수가 어려워진다는 문제점이 발생한다. - 핵심 관심 사항(핵심 비즈니스 로직)과 공통 관심 사항(시간을 측정하는 로직)을 분리함으로써 이러한 문제점을 해결할 수 있다. AOP를 통한 해결 - 위 그림과 같이 핵심 관심 사항(핵심 비즈니스 로직)과 공통 관심 사항(시간을 측정하는 로직)을 분리한다. - 시간을 측정하는 로직을 공통 로직으로 만든 후 원하는 적용 대상을 선택해 준다. - 이와 같이 공통으로 처리해야 하는 기능들을 별도로 분리함으로..
-
Spring Boot - 스프링 웹 개발 기초Framework & Library/Spring Boot 2021. 9. 23. 17:49
정적 콘텐츠의 동작 과정 1. 웹 브라우저 요청 ex) localhost:8080/hello-static.html 2. 내장 톰캣 서버에서 콘텐츠 탐색 2-1. 우선, 스프링 컨테이너에 접근 → hello-static 관련 컨트롤러가 존재하지 않음 2-2. static 폴더에 접근 → hello-static.html 파일이 존재 3. 브라우저에 hello-static.html 파일을 렌더링 MVC와 템플릿 엔진의 동작 과정 1. 웹 브라우저 요청 ex) localhost:8080/hello-mvc?name=spring 2. 내장 톰캣 서버에서 콘텐츠 탐색 2-1. 스프링 컨테이너에 접근 → 해당 url과 매핑된 컨트롤러가 존재 2-2. 모델이 전달받은 데이터를 처리한 후, 템플릿 이름을 반환 2-3. v..