Spring boot
[Spring Boot] @RequestHeader, Header의 데이터
@RequestHeader 이란? @RequestHeader 애노테이션은 웹 request header에 바운딩 된 데이터를 나타낸다. HttpHeaders의 메서드를 통해 header의 원하는 데이터를 추출할 수 있다. Map 또는 MultiValueMap으로 메서드 인자를 설정하면 모든 header의 이름과 값을 불러올 수 있다. @GetMapping("/test") public String test(@RequestHeader HttpHeaders header) { return "header : " + header.gerFirst("Authorization") } 애노테이션에서 Key를 이용하여 데이터를 꺼낼 수도 있다. @GetMapping("/test") public String test(@Req..
[Spring Boot] Validation @Max 와 @Size의 차이
1. Validation이란? Java에서 Bean Validation이라는 데이터 유효성 검사 프레임워크를 제공하여 필드에 annotation을 적용하여 제약 조건을 정의하기 위해 사용한다. Validation은 객체에 직접 정의하여 유효성 검사 로직의 문제를 해결할 수 있다. 2. Dependency 추가 implementation 'org.springframework.boot:spring-boot-starter-validation' 3. Parameter 검증하기 @Valid 애노테이션을 객체에 적용하면 유효한 객체인지 검사한다. BindingResult 객체를 통해 유효하지 않을 경우 Error를 확인할 수 있다. @Controller public class TestController { priv..
[Spring boot] 배포 패키징 jar 에서 war로 변경
JSP 템플릿을 사용하여 화면 구성을 하기 위해 기존의 jar 프로젝트에서 war 프로젝트로 변경해보자. 먼저 간단하게 jar와 war의 차이점을 알아보자. 해당 프로젝트는 Gradle 기준으로 변경하였다. Jar란? 여러개의 자바 클래스 파일과, 클래스들이 이용하는 관련 리소스 및 메타데이터를 하나의 파일로 모아서 자바 플랫폼에 응용 소프트웨어나 라이브러리를 배포하기 위한 소프트웨어 패키지 파일 포맷이다. JRE(JAVA Runtime Environment)만 있어도 실행 가능하다. war란? 웹 애플리케이션을 구성하는 자바 클래스, 자바 서버 페이지, 관련 XML 파일 등을 묶은 압축 파일 포맷이다. 원하는 구성을 할 수 있는 Jar와 달리 War는 WEB-INF 및 META-INF 디렉토리로 사전 ..
[Spring Boot] JPA 조회 작업 findById(), getOne()의 차이
JpaRepository의 구현체 TestRepository public interface MemoRepository extends JpaRepository { } findById() java,util 패키지의 Optional type으로 반환한다. (결과가 존재하는지 체크 가능) findById()는 실행하는 순간 SQL은 처리 된다. public void testSelect() { Long mno = 10L; Optional result = memoRepository.findById(mno); System.out.println("************"); if (result.isPresent()) { Memo memo = result.get(); System.out.println(memo); } }..
[Spring Boot] JPA Caching 적용하기
Dependency implementation group: 'org.springframework.boot', name: 'spring-boot-starter-cache' ConcurrentHashMap caffeine application.yml logging: level: org: hibernate: SQL:DEBUG type.descriptor.sql.BasicBinder:DEBUG mainApplication.java @SpringBootApplication @EnableCaching public class mainApplication { public static void main(String[] args) { SpringApplication.run(mainApplication.class, args..