1. Validation 애노테이션 사용 시에 발생하는 ConstraintDeclarationException 에러[ Validation 애노테이션 사용 시에 발생하는 ConstraintDeclarationException 에러 ]에를 들어 다음과 같은 컨트롤러가 존재한다고 하자. 파라미터로 받는 name은 최소 길이가 10이여야 한다는 유효성 검사를 도와주는 @Length 애노테이션이 붙어 있다. 그리고 이를 추싱화한 TestControllerInterface에는 관련 애노테이션 정보가 존재하지 않는 상황이다. 이러한 상황에서 컨트롤러를 호출하게 되면 어떤 결과가 나올까?import org.hibernate.validator.constraints.Length;import org.springframewo..
1. 스프링 부트의 JAR 파일 처리 방식[ WAR 방식의 한계점과 스프링 부트의 등장 ]이전 포스팅에서 살펴보았듯, 스프링 부트는 컨테이너리스(Containerless) 웹 애플리케이션 아키텍처에 대한 요구와 함께 등장했다. 과거에는 톰캣 같은 웹 애플리케이션 서버(WAS)를 먼저 설치하고, 애플리케이션 코드를 WAR로 빌드한 후, 빌드한 WAR 파일을 WAS로 옮기고(배포) WAS를 실행하는 절차들이 필요했다.하지만 이는 WAS를 서버에 직접 설치해야 하는 번거로움 뿐만 아니라, 개발 환경 설정과 배포 과정의 복잡함 등 많은 단점이 있었다. 따라서 스프링이 “애플리케이션의 설정을 처음부터 끝까지 지원하는 아키텍처를 제공해준다면, 단순히 main 메소드를 호출하는 것 만으로도 애플리케이션의 실행과 ..
1. @Async에서 The bean could not be injected because it is a JDK dynamic proxy 에러 발생 원인 분석하기[ 문제 발생 상황 ]다음과 같이 TestInterface와 이를 구현한 TestService가 있고, TestService를 주입받는 TestController가 있다고 하자.public interface TestInterface { default void hello() { System.out.println("hello"); }}@Service@Slf4jpublic class TestService implements TestInterface { @Async public void gogo() { lo..
1. @RequestPart의 동작 방식을 통해 스프링의 MultipartFile 파일 업로드 처리 방식 이해하기 [ MultipartFile 파일 업로드 활성화하기 ]일반적으로 스프링 애플리케이션으로 파일을 업로드하기 위해서는 다음의 2가지 옵션이 사용된다. 먼저 enabled 옵션을 통해 멀티파트를 통한 파일 요청을 활성화하고, 서비스의 안정성을 위해 업로드 가능한 최대 파일의 크기를 지정해줄 필요가 있다.spring.servlet.multipart.enabled=truespring.servlet.multipart.max-file-size=1MBspring.servlet.multipart.resolve-lazily=true 여기에 추가적으로 resolve-lazily 옵션 역시 활용하면 좋다. 해당..
1. 하이버네이트 ddl-auto 옵션과 ddl-auto=validate 옵션의 동작 과정 분석하기(Hibernate ddl-auto =validate option)[ 다양한 하이버네이트의 ddl-auto 옵션과 validate 설정 ]JPA와 Hibernate는 ddl-auto 옵션을 통해 스키마에 대한 특정한 작업을 수행할 수 있도록 도와준다.none: Hibernate는 데이터베이스 스키마에 대해 아무런 작업도 수행하지 않음validate: 엔티티 매핑 정보와 실제 데이터베이스 스키마를 비교하여 유효성 검사만 수행하도록 Hibernate에 지시함create-only: 엔티티 모델을 기반으로 데이터베이스 스키마를 생성만 하도록 Hibernate에 지시함drop: 엔티티 모델을 참조하여 DDL DROP..