본문 바로가기
반응형

Spring31

RequestDTO에 사용하는 @NoArgsConstructor(access = AccessLevel.PROTECTED) @NoArgsConstructor는 객체 내부의 데이터 없이 객체를 생성할 수 있게 하는 어노테이션이다. 기본 생성자를 자동으로 만들ㄹ어주며, 주로 프레임워크가 객체를 인스턴스화할 때 사용된다. @NoArgsConstructor(access = AccessLevel.PROTECTED)라는 어노테이션을 사용하면 해당 객체를 외부에서 생성하지 못하도록 한다. 언제 해당 객체를 외부에서 생성하지 못하도록 하면 될까? requestDTO의 경우이다. requsetDTO의 경우 클라이언트가 서버에 데이터를 담아서 보내면 서버에서 DTO로 받는다. 이 객체는 서버에서만 인스턴스화 되어야하며, 외부에서 무분별하게 생성하면 안된다. DTO 객체가 임의로 생성된다면, 데이터 변경이 발생하거나 잘못된 상태의 객체가 만들어.. 2024. 9. 30.
[Security] 보안 취약점 CSRF 해결 보안 취약점으로 CSRF가 걸리게 될 경우, 무엇을 안해서 걸린 것일까. 웹 애플리케이션에서 CSRF(Cross-Site Request Forgery) 공격을 방지하는 것은 중요하다. 스프링 시큐리티(Spring Security)는 기본적으로 CSRF 공격을 방지하는 기능을 제공한다. 이번 글에서는 스프링 시큐리티에서 CSRF 보호를 위한 설정을 어떻게 구성할 수 있는지, 그리고 어떻게 CSRF 토큰을 쿠키에 저장하고, SPA(Single Page Application) 환경에서 이를 처리하는지에 대해 알아보겠다.  1. CSRF란?CSRF(Cross-Site Request Forgery)는 웹 애플리케이션에서 발생할 수 있는 보안 취약점 중 하나로, 사용자가 의도하지 않은 요청을 통해 악의적인 행위를 .. 2024. 9. 6.
[MVC] 정수 오버플로우 예외 처리 - GlobalExceptionHandler 활용 웹 개발을 할 때, 클라이언트가 서버로 잘못된 데이터를 전달하는 경우가 있다. 클라이언트가 일정 범위의 정수를 입력해야하는데 너무 큰 숫자를 입력하거나 잘못된 데이터를 전달하는 경우 발생하는 오류가 있다. 정수 오버플로우이다. 해결방안은 GlobalExceptionHandler를 통해서 전역적으로 예외를 처리하는 것이다. int인 testId를 PathVariable로 받는 코드이다. @RequiredArgsConstructor@Controller@RequestMapping("/test")public class TestController { @GetMapping("/{testId}") public String selectTest(@PathVariable("testId") int testId, .. 2024. 9. 5.
[MVC] 웹 페이지 성능 최적화: EhCache를 활용한 데이터 캐싱 구현 웹 페이지를 처음 로드할 때 필요한 데이터는 매번 Contoller -> Service -> Repository를 통해 DB 조회를 하지 않고 캐싱을 통해 성능을 향상시킬 수 있습니다. 캐싱을 구현하는 방법 중 하나로 Interceptor를 사용하여 요청을 가로채고, 캐시된 데이터를 제공할 수 있습니다. 캐싱 라이브러리는 많이 사용되는 EhCache를 이용하여 메뉴 데이터를 캐싱하겠습니다. 앞으로 사용할 클래스 다이어그램입니다.    ehcache.xml 세팅 정보입니다. 캐시의 이름, 메모리 및 디스크에 대한 구성, 캐시의 수명 및 유효시간 등을 설정할 수 있습니다.   spring: cache: ehcache: config: classpath:ehca.. 2024. 5. 31.
[MVC] @PathVariable, @RequestParam 사용법, 언제 사용하는지 @PathVariable@PathVariable은 springframework가 제공하는 인터페이스입니다. @PathVariable 사용이유: 메서드 매개변수를 URI 템플릿 변수에 바인딩하기 위해 사용합니다.@RequestMapping을 포함한 다양한 요청 매핑 어노테이션인 @GetMapping, @PostMapping, @PutMapping, @DeleteMapping 등과 함께 사용할 수 있습니다.@GetMapping("/items/{itemId}")public String item(@PathVariable Long itemId, Model model) { ...}   메서드 매개변수를 다르게 하고 싶다면 소괄호를 사용하여 URI 템플릿 변수에 바인딩 하고 사용 가능합니다. @GetMappin.. 2024. 5. 20.
[MVC] MVC1, MVC2 차이점 MVC1MVC2하나의 component가 request를 받고 response를 보내는 책임을 가집니다.response를 받고 보내는 여러 개의 컴포넌트가 있습니다.presentation logic, business logic이 같이 있습니다.presentatin logic을 business logic으로부터 분리합니다.presentation logic, business logic이 결합되어 있어서 web designer와 web developer가 함께 일을 하기 어렵습니다.logic이 분리되어있어서 designer와 developer가 일을 함께 할 수 있습니다.application component의 재사용을 지지하지 않습니다.component의 재사용이 가능합니다.JSP에 controller와 m.. 2024. 5. 7.
[Spring] 스프링 핵심 원리 - 기본편 > 섹션 8. 빈 생명주기 콜백 인프런 김영한 강사님의 [스프링 핵심 원리 - 기본편] 섹션8. 빈 생명주기 콜백에 대한 요점 정리를 하였다. 목차 1.스프링 빈 이벤트 라이프 사이클 2.빈 생명주기 콜백 3가지 방법 1.스프링 빈 이벤트 라이프 사이클 스프링 빈의 이벤트 라이프 사이클은 다음과 같다. 스프링 컨테이너 생성 -> 스프링 빈 생성 -> 의존관계 주입 -> 초기화 콜백 -> 사용 -> 소멸전 콜백 -> 스프링 종료 데이터베이스 커넥션 풀이나, 네트워크 소켓의 경우, 애플리케이션 시작 시점에 필요한 연결을 하고 애플리케이션 종료 시점에 종료하는 작업이 필요하다. 이를 위해 객체의 초기화와 종료 작업인 빈 생명주기 콜백 3가지에 대해 알아보려한다. 2.빈 생명주기 콜백 3가지 방법 2-1. 인터페이스 InitializingBe.. 2024. 4. 12.
[Spring] 스프링 핵심 원리 - 기본편 > 섹션 7. 의존관계 자동 주입 인프런 김영한 강사님의 [스프링 핵심 원리 - 기본편] 섹션7. 의존관계 자동 주입에 대한 요점 정리를 하였다. 목차 1.의존관계 주입방법 2.조회 빈이 2개 이상일 경우 3.어노테이션 직접 만들기 1.의존관계 주입방법 의존관계 주입 방법에는 크게 4가지가 있다. 1. 생성자 주입 2. 수정자 주입(setter 주입) 3. 필드 주입 4. 일반 메서드 주입 이 중에서 생성자 주입을 기본으로 사용하자. 대부분의 의존관계 주입은 변하면 안되기 때문이다. 수정자 주입 방식은 다른 필드 값들도 주입해주어야 하므로 누락의 가능성이 있다. 필드 주입은 테스트하기 어렵고 @Configuration 같은 특별한 용도에서만 사용한다. 일반 메서드 주입은 한번에 여러 필드를 주입 받을 수 있지만 잘 사용하지 않는다. @C.. 2024. 4. 11.

반응형
반응형