Spring
-
데이터 2부 : 인메모리 데이터베이스Spring 2020. 7. 12. 14:01
지원하는 인메모리 데이터베이스 - H2 (추천) - HSQL - Derby jdbc, h2 의존성 추가 jdbc가 들어오면 자동설정 여러가지가 지원됨. jdbc 의존성 추가시 DataSource, jdbcTemplate 주입받아 사용 가능 아무런 데이터 소스 설정이 없으면, 스프링 부트는 자동으로 인메모리 데이터베이스를 설정한다. 기본 연결 정보는 URL : "testdb" username : "SA" 생성되었는지 어떻게 확인하는가 ? h2-console에 접속해서 확인이 가능하다. application.properties에 spring.h2.console.enables=true 추가 localhost:8080/h2-console로 접속 , URL, Name 정보 확인 후 연결시 확인 가능하다. Jdbc..
-
웹 MVC 8부 ~ 11부Spring 2020. 7. 11. 20:06
8부 HtmlUnit 9부 ExceptionHandler 여기서 바로 AppError로 반환하는데 ResponseEntity처럼 보낼 수 도 있다. 그리고 이 컨트롤러에만 관한게 아니라 전체를 다룰때는 @ControllerAdvice를 붙여서 사용한다. @ControllerAdvice인 클래스를 작성하고 @ExceptionHandler에 관한 메소드를 모아서 사용한다. - 커스텀 에러 페이지 resources/static/error/ 에러코드와 맞는이름으로 작성하면 자동으로 바인딩 ex) 404 -> 404 / 500번대의 에러 -> 5xx 10부 Spring HATEOAS Rest API 를 만들때 서버가 리소스에 대한 정보를 제공할 때, 그 리소스와 연관이있는 링크 정보들까지 같이 제공하고, 클라이언..
-
웹 MVC - 1부 ~ 7부Spring 2020. 7. 9. 17:11
1부 웹MVC 소개 스프링 부트에서는 자동 설정으로 웹 MVC에 대한 기본 설정들을 제공해준다. 그런데 확장하거나 재정의 하고싶을때는 어떻게 하는가 ? 확장은 @Configuration + implements WebMvcCOnfigurer 후에 메소드를 오버라이딩 해서 사용한다. 재정의는 잘 사용하지 않는데 @Configuration + @EnableWebMvc 를 사용한다. 2부 HttpMessageConverters Http 요청 -> 객체, 객체 -> Http응답 으로 매핑하는데 사용한다. 사용하기 위해서는 @RequestBody, @ResponseBody를 사용한다. 기본적으로 @Controller에서는 @ResponseBody를 사용하지만 @RestController의 경우에는 HttpMessa..
-
테스트Spring 2020. 7. 8. 18:48
MOCK 사용할때 @AutoConfigureMockMvc , MockMvc 주입받아 사용, 내장 톰캣 사용 안한다. TestRestTemplate 사용할때, RANDOM PORT, DEFINED PORT 있지만 RANDOM_PORT 추천, TestRestTemplate 주입받아 사용, 진짜 내장 톰캣 사용한다. WebTestClient 의존성 webflux 추가후 사용한다. 슬라이스 테스트 WebMvcTest - web과 관련된 클래스들만 빈으로 등록되서 테스트 OutputCaptureRule 로그를 비롯해서 콘솔에 찍히는 모든 것을 캡쳐한다. public 으로 객체 생성해서 사용한다. OutputCapture 가 deprecated 되어 OutputCaptureRule 사용 ※참조 www.inflear..
-
로깅 - 1부, 2부Spring 2020. 7. 8. 17:35
로깅 퍼사드 - Commons Logging, SLF4j - 실제 로깅을 하지않고 로거api들을 추상화 해놓은 인터페이스 - 프레임워크는 보통 로깅 퍼사드를 사용한다. - 장점 : 로거를 바꿔서 사용 할 수 있게 해준다. 중간에 과정이 있지만 최종적으로는 Logback을 사용한다. 디버그 --debug, -Dddebug는 모든 메시지를 디버그로 찍는것은 아니고 embadded container, Hibernate, Spring boot 에 관한것만 디버그 모드로 찍는다. 모든 메시지를 찍고싶을때는 --trace 컬러 출력 application.properties에 spring.output.ansi.enabled = always 파일 출력 logging.file는 path 설정 logging.path는 d..
-
ProfileSpring 2020. 7. 8. 17:02
@Profile 애노테이션은 어디에? - @Configuration - @Component 어떤 프로파일을 활성화 할 것인가? - spring.profiles.active 어떤 프로파일을 추가할 것인가? - spring.profiles.include 프로파일용 프로퍼티 - application-{profile}.properties 같은 이름의 빈이 두 개가 있을때 @Profile()을 통해 어떤 파일을 활성화 할 것인지 정할 수 있다. 이럴때 빈을 호출하면 프로파일 명이 달라 빈을 읽어들이는데 에러가 발생한다. application.properties에 위와 같이 spring.profiles.active=xxx 식으로 어떤 profile을 활성화 할지 정한다. 프로파일용 프로퍼티 application.p..
-
외부설정 - 2부Spring 2020. 7. 7. 16:26
외부설정을 Bean으로 사용하기 Class 생성후 @Component 등록 @ConfigurationProperties("key") 선언후 getter,setter 설정 위 의존성을 추가해줘야 사용가능 사용할 때는 @Value가 아닌 빈을 주입받아서 .getXXX 메소드로 사용 융통성 있는 바인딩 - context-path (케밥) - context_path (언더스코어) - contextPath (캐멀케이스) - CONTEXTPATH 모두 properties에서 지원한다. Duration Type 컨버젼 application.properties 안에 있는 키, 값들은 사실 모두 문자열 형태로 존재하지만, Bean 으로 등록되는 클래스와 바인딩될 때, String, int, Duration 등으로 모두 ..
-
외부 설정 - 1부Spring 2020. 7. 7. 15:35
외부 설정 파일 - 애플리케이션에서 사용하는 여러가지 설정 값들을 애플리케이션의 밖이나 안에 정의할 수 있는 기능이다. 사용할 수 있는 외부 설정 - properties - YAML - 환경변수 - 커맨드 라인 아규먼트 application.properties는 기본적으로 key-value값이고, 스프링 부트가 애플리케이션을 구동할 때 자동으로 로딩하는 파일이다. 외부설정을 사용하는 방법 - application.properties에 입력한 값을 @Value로 사용 가능하다. - Environment 객체를 가져와 .getProperty("key) 메서드로 사용 가능하다. 테스트에서의 외부 설정 - 테스트 실행시 main -> test 순서로 프로젝트를 빌드, test 에 있는 파일들이 main 에 있는..