레디스(Redis) 레디스는 Key-Value 기반인 인메모리 데이터 저장소로서 주로 캐쉬 솔루션으로 쓰이고 있는 오픈 프로젝트 입니다. 레디스를 이용하게 되면 JVM위에서 동작하지 않고 어떤 데이터를 캐싱할 수 있다. 따라서 GC대상이 되지 않고 그로 인한 오버헤드가 줄어드는 장점이 있다. Redis는 기본적으로 스프링부트에 6379 포트로 설정되어 있다. 스프링부트와 레디스(Redis) 연동 의존성 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-starter-data-redis 레디스 도커 실행 d..
@NotNull Null 값이 될 수 없다는 것을 명시한다. NullPointerException에 대한 대안이 될 수 있다. @Cleanup 자동으로 close() 메소드를 호출하는 역할을 한다. @Getter/Setter Setter/Getter 을 생성한다. @ToString toString에 대한 메소드 생성 @NoArgsConstructor / @RequiredArgsConstructor / @AllArgsConstructor 파라미터를 받지 않는 생성자를 만들어 준다.(@NoArgsConstructor) 지정된 속성들에 대해서만 생성자를 만들어 준다.(@RequiredArgsConstructor) 모든 속성에 대해서 생성자를 만든다. (@AllArgsConstructor) @Data @ToSt..
Spring 프로젝트를 진행하면서 컴포넌트 내부에서 URL을 요청해야하는 경우가 생긴다. Spring에서는 Http 요청을 간단하게 이용할 수 있도록 Blocking I/O 기반의 RestTemplate, Non-Blocking I/O 기반의 WebClient 모듈을 제공한다. | RestTemplate 예제 SampleController.java package com.kyhslam; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class SampleController { @GetMapping..
| PostgreSQL 도커 띄우기 - 윈도우 PostgreSQL 이미지 실행 docker run -p 5432:5432 -e POSTGRES_PASSWORD=pass -e POSTGRES_USER=kyhslam -e POSTGRES_DB=springboot --name postgres_boot -d postgres 실행 확인 실행된 도커의 bash shell에 접속 docker exec -i -t postgres_boot bash postgres로 유저를 바꾸고 kyhslam 계정으로 접속 su - postgres psql springboot -U kyhslam 또는 psql --username kyhslam --dbname springboot Database 목록조회 ## 릴레이션 리스트 \l ## ..
스프링 부트 ExceptionHandler 스프링부트에서 ExceptionHandler를 기본적으로 등록하여 Exception을 처리하고 있다. 기본 예외 처리기는 스프링에서 자동적으로 등록하는 BasicErrorController에서 관리한다.(에러 발생 시 JSON 형식으로 리턴한다) 커스텀 Exception 핸들러, 커스텁 Exception 클래스를 만들어서 예외를 처리 할 수 있다. Http Status 코드에 맞게 예외 발생 시 html 문서를 클라이언트에게 전송할 수 있다. 소스코드 package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfig..
HtmlUnit 이란? HtmlUnit은 프로그래밍적으로 HTML 사이트와 상호작용할 수 있게하는 자바 오픈소스 이다. 즉 Html에 특화되어 있는 테스트라고 생각하면 된다. 테스트 프레임워크로서 생각할 수 있지만 브라우저와 프로그래밍적으로 상호작용 할 수 있게하는 확장된 개념으로 생각하는 것이 좋다. 스프링4 이후에 스프링에 통합되면서 MVC 테스트(특히 템플릿 뷰 테스트) 때 유용하게 쓰인다. http://htmlunit.sourceforge.net/ 공식 사이트를 참고하면 좋다. http://htmlunit.sourceforge.net/gettingStarted.html 본인의 취향에 맞게 MockMvc를 쓸지 둘다 쓸지 결정해서 사용하면 된다. HtmlUnit사용을 위해 의존성을 추가해 줘야 된다..
스프링 부트가 자동설정을 지원하는 템플릿 엔진 FreeMarker Groovy Thymeleaf Mustache Jsp 권장하지 않는 이유 Jar 패키징 할때는 동작하지 않고, war로 패미징을 해야한다. Undertow는 JSP를 지원하지 않는다. (JBOSS에서 지원하는 서블릿 엔진이다) jsp는 서블릿엔진이 템플릿을 완성시킨다. 학습 및 참고 URL https://www.thymeleaf.org/ https://www.thymeleaf.org/doc/articles/standarddialect5minutes.html Getting started with the Standard dialects in 5 minutes - Thymeleaf Getting started with the Standard d..
스프링 웹 MVC 인덱스 페이지 웰컴 페이지 : 웹 애플리케이션의 root(/) 로 요청했을 때 보여주는 페이지이다. index.html을 만들고 resources/static/ 안에 두면 root(/) 요청 시 애플리케이션이 해당 html 파일을 반환한다. index.html 웰컴!!!! 스프링 부트 http://localhost:8080 스프링 파비콘(favicon.ico) 설정 *resource/static/ 아래 경로에 파비콘을 추가한다. 주의할 점은 파일명을 꼭 favicon.ico 로 해야한다. http://localhost:8080 요청시 응답 화면이다.
| 스프링 부트 정적 리소스 지원 스프링부트에서 정적리소스 지원할 때 URL의 root(/) 에 자동적으로 정적 리소스를 매핑할 수 있다. resource/static/hello.html Hello static resource http://localhost:8080/hello.html 로 연결 시 다음과 같이 브라우저에 출력 된다. | application.properties를 통한 정적 리소스 매핑 application.properties에 아래내용으로 설정 spring.mvc.static-path-pattern=/static/** http://localhost:8080/static/hello.html 로 static경로를 붙여 연결해야한다. | WebMvcConfigurer를 통한 정적 리소스 매핑 ..
참고 URL : https://docs.spring.io/spring/docs/5.0.7.RELEASE/spring-framework-reference/web.html#spring-web | 웹 MVC 컨트롤러 구현 import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class UserController { @GetMapping // @ResponseBody가 생략되어 있는 것이다. public String hello(){ // @RestController가 아닌 @Controller 어노테이션을 사..
| 스프링 부트 테스트 (Test) 스프링부트에서는 @SpringBootTest 어노테이션을 통해 스프링부트 어플리케이션 테스트에 필요한 모든 의존성을 제공한다. 또한, @SpringBootTest 어노테이션 내에서 어떠한 테스트 환경으로 테스트를 할 것인지를 따로 지정할 수 있다. 스프링부트 테스트를 진행하기 위해서는 먼저 다음과같은 의존성을 추가해야 한다. org.springframework.boot spring-boot-starter-test test 관련 코드 @RestController public class SampleController { @Autowired private SampleService sampleService; @GetMapping("/hello") public String he..
| 스프링 부트 로깅( Spring Boot Logging ) 스프링 부트에서는 로깅 설정을 자동적으로 지원한다. slf4j 로깅 파사드 (로깅 모듈을 추상화 한것)를 통해 logback을 지원한다. 즉, 실제 콘솔에 찍어주는 것은 logback이다. package org.kyhslam.springinit; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; ..