전체 글(39)
-
@Transactional, 영속성 컨텍스트
@Transactional데이터 접근 기술마다 데이터 베이스 접근 방법이 다름하지만 실제로 하는 일은 비슷함 => 추상화 가능@Transactional은 Spring AOP로 구현되어 있다.빈 생성시 @Transactional애노테이션이 붙어있다면 프록시 객체가 빈으로 등록된다.=> @Transactional를 Service 클래스에 선언하면 해당 클래스에서 비지니스 로직을 수행할 때 Service의 프록시 객체가 빈으로 등록되어 수행 스프링에서 @Transactional 을 이용하여 트랜잭션 처리를 하는 방법DB와 관련된, 트랜잭션이 필요한 서비스 클래스 혹은 메서드에 @Transactional 어노테이션을 달아주어야 한다클래스, 메서드 모두에 @Transactional 어노테이션을 붙이면 메서드 레..
2024.03.23 -
엔티티와 @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