분류 전체보기(38)
-
엔티티와 @RequestBody를 쓰는 DTO에서 기본 생성자, getter/setter의 필요성 (리플랙션)
엔티티 데이터베이스의 테이블과 매핑 하기 위해 기본 생성자 필요 getter/setter 둘 중 하나 필요 엔티티 클래스에서 setter은 지양되니 getter 권장 JPA 구현체(예: Hibernate)가 내부적으로 리플렉션 개념을 사용하여 매핑을 수행 @RequestBody를 쓰는 DTO JSON 객체의 필드를 Java 객체의 필드에 매핑 하기 위해 기본 생성자 필요 getter/setter 둘 중 하나 필요 Jackson 라이브러리의 ObjectMapper가 내부적으로 리플랙션 개념을 사용하여 매핑을 수행 리플랙션이란? 프로그램 실행중(런타임)에 사용자와 운영체제 및 기타 프로그램과 상호작용 하면서 클래스와 인터페이스 등을 검사하고 조작할 수 있는 기능 자바 소스 파일을 컴파일하면 클래스 로더를 통..
2024.03.22 -
스프링 시큐리티
스프링 기반의 애플리케이션 보안(인증, 인가)을 담당하는 스프링 하위 프레임워크 인증(Authentication): 사용자의 신원 확인 및 인증을 담당. 예를 들어, 사용자가 제공한 자격 증명을 확인하고 인증. 인가(Authorization): 인증된 사용자에 대한 권한 부여를 담당. 특정 리소스에 접근할 수 있는 권한을 확인. 보안 설정: 웹 애플리케이션의 보안 설정을 구성. 예를 들어, 특정 URL 패턴에 대한 보안 정책을 설정하거나, CSRF(Cross-Site Request Forgery) 공격 방지를 위한 설정을 할 수 있다 스프링 시큐리티는 앞서 공부한 서블릿 필터 기반으로 동작 SecurityFilterChain의 각 필터에서 인증, 인가와 관련된 작업 처리 많은 필터들이 있다. Userna..
2024.03.20 -
Servlet Filter, Spring Intercepter
사용자를 인증하는 로직이 비지니스 로직들에 공통으로 위치하게 된다 이러한 공통 관심사를 추출 서블릿 필터의 경우 파라미터에 ServletRequest, ServletResponse를 스프링 인터셉터의 경우 파라미터에 HttpServletRequest, HttpServletResponse를 제공 URL정보나 HTTP헤더를 직접 조작할 수 있기 때문에 AOP보다 웹과 관련된 공통 관심사항을 처리하는 데에 장점이 있다 서블릿 필터 Dispatcher Servlet에 요청이 전달되기 전, 후에 부가작업을 처리하는 객체 WAS(서블릿 컨테이너)에서 실행되므로 스프링의 범위 밖에서 처리가 된다는 특징이 있다 요청이 들어올 때 ⇒ 서블릿 전에 필터가 동작 응답을 보낼 때 ⇒ 서블릿이 실행 된 다음에 필터가 동작 ja..
2024.03.19 -
@ResponseBody, @ModelAttribute, Model 인터페이스
@RequestBody 요청 본문의 JSON, XML, Text 등의 데이터가 적합한 HttpMessageConverter를 통해 파싱되어 Java 객체로 변환 된다. API에서 사용 StringHttpMessageConverter StringHttpMessageConverter는 HTTP 요청 및 응답의 문자열 페이로드를 처리 문자열로 변환하거나 문자열을 객체로 변환하는 데 사용 MappingJackson2HttpMessageConverter: MappingJackson2HttpMessageConverter는 JSON 데이터를 HTTP 요청 및 응답에서 처리하는 데 사용 JSON 데이터를 Java 객체로 변환하거나 Java 객체를 JSON으로 변환하는 데 사용 StringHttpMessageConver..
2024.03.18 -
스프링 Data Jpa로 API 만들기
스프링이 HTTP응답을 처리하는 방식 3가지가 있었다 정적 컨텐츠 MVC와 템플릿 엔진 (동적 컨텐츠, 타임 리프) API 세가지 방식이 있는 것을 알겠는데, 개발자는 어떤 때에 어떤 방식을 선택해서 개발을 해나가야 할까? 기본서에서 글 작성, 글 목록 조회, 글 단건 조회, 글 삭제, 수정 등 여러 API를 만들었었다 하지만 정작 블로그를 구현할 때는 타임리프를 사용해서 뷰와 함께 구현하거나, 삭제 기능 같은 경우는 자바스크립트 만을 사용하여 기능 구현을 하였다 타임리프(Thymeleaf): 서버 측 렌더링(Server-side Rendering)이 필요한 경우: 사용자에게 동적인 HTML 콘텐츠를 제공해야 하는 경우, 타임리프를 사용하여 서버 측에서 HTML을 동적으로 생성. 서버 측에서 모델(Mod..
2024.03.16 -
JPA sql 파일로 초기화 시 발생 에러
Spring에서 JPA를 사용할 때 @Entity 어노테이션을 사용하면 해당 클래스가 데이터베이스의 테이블을 나타내는 엔티티임을 표시한다. Spring Boot에서는 spring.jpa.hibernate.ddl-auto 속성을 통해 DDL 생성 모드를 설정할 수 있다. 이를 통해 데이터베이스 스키마를 자동으로 생성, 업데이트 또는 유지할 수 있다. 이 파일은 Spring Boot 애플리케이션이 시작될 때 자동으로 실행. data.sql 파일에는 삽입할 데이터에 대한 SQL 문을 작성할 수 있다. 이를 통해 초기 데이터를 데이터베이스에 로드할 수 있다. 스프링 버전이 올라가면서 스프링 2.5에서 SQL Script DataSource Initialization의 기능이 변경되면서 발생된 문제이다. 스프링 ..
2024.03.14