기본을 깊이있게
  • 깃허브⭐️
  • 태그
  • 글쓰기
  • 관리
  • 메뉴 닫기
  • 글작성
  • 방명록
  • 환경설정
    • Hyojunn__ (19)
      • Coding Test (3)
        • Baekjoon (0)
        • Programmers (3)
        • SW Expert (0)
        • etc (0)
      • Computer Science (4)
        • Python (0)
        • 자료구조 (0)
        • Java (4)
        • Kotlin (0)
        • 데이터베이스 (0)
        • 운영체제 (0)
        • 네트워크 (0)
        • 알고리즘 (0)
        • etc (0)
      • FrontEnd (0)
        • Android (0)
        • Flutter (2)
        • etc (0)
      • Spring (5)
        • Framework (1)
        • JPA (1)
        • etc (1)
      • 오류해결 (2)
      • 일상 (0)
        • 취업준비 (0)
        • 이모저모 (0)
  • 홈
  • 태그
  • 방명록
Spring

@Valid 검증 어노테이션

‘@Valid’는 Bean Validation(빈 검증기)를 이용하여 객체에 대한 조건을 확신하는 어노테이션 입니다.Spring은 LocalValidatorFactoryBean 어댑터를 활용하여 객체 조건을 확인하게 됩니다.LocalValidatorFactoryBean 어댑터를 사용하기 위해서는 spring-boot-starter-validation 을 추가해 주면 됩니다.주요 제약 어노테이션은 다음과 같습니다‘@NotNull’null이 아니어야 함‘@NonEmpty’빈 값이 아니어야 함(문자열, 컬렉션 등)‘@Min’ , ‘@Max’숫자의 최소/최대값‘@Email’이메일 형식‘@Pattern’정규 표현식 패턴public class User { @NotNull(message = "이름은 빈 값이 아..

2024. 7. 21. 23:41
Spring

Pagination

페이징은 수 많은 콘텐츠(데이터)들을 원하는 크기만큼 '페이지'로 나누는 기술을 의미합니다.주로 데이터베이스 쿼리나 API 응답에서 사용되며, 크기를 줄인 만큼 DB 에 부담을 줄이고 성능을 향상 시킵니다.이러한 페이징 기술을 크게 2가지 기술을 사용합니다.오프셋 기반 페이징(Offset Paging)첫 번째는 오프셋 기반 페이징 입니다.오프셋 기반 페이지네이션은 MySQL 기준으로 offset, limit을 사용하여 쿼리르 작성합니다.하지만 이는 성능 저하 문제가 발생할 수 있습니다. offset의 크기가 커질수록 조회해야 하는 데이터 수가 늘어나기 때문입니다.select * from itemorder by created_at desclimit 10offset 10000000;이와 같은 경우 100,0..

2024. 7. 14. 23:31
Spring

Bean Lifecycle

스프링의 가장 큰 특징이라고 생각되는 것은 DI, IoC 가 있습니다.DI(Dependency Injection)과 IoC(Inveresion of Control) 은 개발자의 편의를 증가시키는데요객체의 생성부터 소멸까지 개발자가 직접 코드로 관리하는 것이 아닌, 컨테이너(여기서는 스프링 컨테이너)가 관리해줍니다.또한 빈 컨테이너에서 각 빈들은 싱글톤으로 관리되어 메모리 측면에서도 효율적인 모습을 보여줍니다Bean 의 생성과 소멸 과정인스턴스화Spring 컨테이너가 Bean의 인스턴스를 생성합니다.프로퍼티 설정DI(Dependency Injection)을 통해 Bean의 프로퍼티 값을 설정합니다.초기화 콜백Bean을 사용할 준비가 완료되었음을 의미하는 콜백 함수를 호출합니다.‘@PostContruct’,..

2024. 7. 7. 22:00
Spring

Transaction Propagation

서버를 운영하다 보면 하나의 로직에서 Exception과 같이 정상적으로 수행되지 못한 경우 rollback 처리를 할 때가 빈번합니다.왜냐하면 A -> B, C -> D 가 정상 로직인데 A -> B 만 성공하고 C -> D는 성공하지 못했을 때, A -> B 또한 다시 이전 상태로 돌려줘야 하기 때문입니다. 이러한 경우 우리는 대부분 @Transaction의 기본 옵션인 REQUIRED를 사용하게 되는데요 그 외의 옵션에는 무엇이 있나 이번 포스팅에서 한번 살펴보려 합니다. 첫 번째로는 위에서도 말한 REQUIRED 입니다.이는 @Transaction 어노테이션을 사용했을 때, 기본적으로 적용되어 있는 옵션입니다.현재 트랜잭션이 존재하면 그 트랜잭션을 사용하고, 없으면 새 트랜잭션을 시작합니다.@Tr..

2024. 6. 30. 22:29
오류해결

AWS 배포 시 메모리 부족 현상

이번에 제가 담당한 프로젝트를 배포하는 도중 유난히 build 과정에서 시간이 오래 걸렸습니다,,,! 로컬 환경에서는 5~6초면 빌드가 되는 아주 간단한 프로젝트였는데 aws에서는 10분이 넘어가도 빌드가 되지 않더라구요! 뭐가 문제일까 한참 찾아보다가 팀원분중 한분께서 "메모리가 부족하면 이러한 현상이 일어날 수 있다" 라고 말씀해주셔서 관련 글을 찾아보며 문제를 해결했던 과정을 공유해보려 합니다! 제가 사용한 인스턴스는 프리티어에서 사용 가능한 t2.microEC2 인스턴스를 골랐습니다!  그러다 보니 메모리가 2GB 밖에 없었는데요 이러한 상황이라면 빌드 도중 메모리가 부족한 현상이 발생할 수 있습니다! 그리하여 한 블로그를 참고하여 가상 메모리 영역을 늘려주어 SWAP Memory 공간을 확보하여..

2024. 6. 23. 22:38
Spring/Framework

DispatcherServlet 이란?

Spring Framework에서 DispatcherServlet은 들어온 요청을 가장 먼저 처리하는 프론트 컨트롤러(Front Controller) 입니다.모든 HTTP 요청은 DispatcherServlet으로 전달되며, 이 서블릿은 요청을 처리하기 위해 여러 컴포넌트와 협력합니다.이를 통해 웹 애플리케이션에서 요청을 효율적으로 처리하고 응답을 생성할 수 있습니다.DispatcherServlet의 주요 역할과 동작 원리요청 수신: 모든 HTTP 요청은 먼저 Servlet Container 안에 존재하는 DispatcherServlet에 도달합니다.예전과 같은 경우에는 web.xml에 따로 설정을 해주어야 했으나, SpringBoot가 등장하면서 이를 대신 해줍니다.핸들러 매핑DispatcherServ..

2024. 6. 16. 15:17
  • «
  • 1
  • 2
  • 3
  • 4
  • »

공지사항

  • 깃허브

전체 카테고리

  • Hyojunn__ (19)
    • Coding Test (3)
      • Baekjoon (0)
      • Programmers (3)
      • SW Expert (0)
      • etc (0)
    • Computer Science (4)
      • Python (0)
      • 자료구조 (0)
      • Java (4)
      • Kotlin (0)
      • 데이터베이스 (0)
      • 운영체제 (0)
      • 네트워크 (0)
      • 알고리즘 (0)
      • etc (0)
    • FrontEnd (0)
      • Android (0)
      • Flutter (2)
      • etc (0)
    • Spring (5)
      • Framework (1)
      • JPA (1)
      • etc (1)
    • 오류해결 (2)
    • 일상 (0)
      • 취업준비 (0)
      • 이모저모 (0)
애드센스 광고 영역
  • 최근 글
  • 최근 댓글

최근 글

최근댓글

태그

  • #LifeCycle
  • #propagation
  • #비동기
  • #해시
  • #ThreadLocal
  • #Class Loader
  • #페이지네이션
  • #java
  • #heapq
  • #java 11
  • #ec2
  • #AWS
  • #Inner Class
  • #DispatcherServlet
  • #async
  • #더 맵게
  • #Flutter
  • #Java 17
  • #GitHub
  • #Container
  • #IntelliJ
  • #swap
  • #Spring
  • #priorityqueue
  • #Kotlin
  • #클래스 로더
  • #프로그래머스
  • #Java 8
  • #await
  • #valid
MORE

전체 방문자

오늘
어제
전체

블로그 인기글

Powered by Privatenote Copyright © 기본을 깊이있게 All rights reserved. TistoryWhaleSkin3.4

티스토리툴바