SpringBoot 29

Spring-Boot-Admin

스프링 부트 어플리케이션의 Actuator UI 를 제공한다. 어드민 서버가 별도로 필요하다. 어드민 서버의 필요의존과 어노테이션 @SpringBootApplication @EnableAdminServer public class AdminApplication { public static void main(String[] args) { SpringApplication.run(AdminApplication.class, args); } } de.codecentric spring-boot-admin-starter-server 2.3.0 Client 의 필요의존과 설정 필요의존 de.codecentric spring-boot-admin-starter-client 2.0.1 application.properties..

SpringBoot 2020.11.08

Spring Boot Acutator

Spring Boot Acutator 스프링부트 애플리케이션 운영 환경에서 유용한 정보를 제공 EndPoint 를 이용해 제공함 필요의존 org.springframework.boot spring-boot-starter-actuator Auctuator ID auditevents : 인증정보, beans : 등록 빈 conditions : 자동설정이 어떤 조건에 의해 적용, 미적용 되었는가. configprops : application.properties env : Spring의 environment flyway : 마이그레이션정보 health : 어플리케이션 구동정보 httptrace : 최근 100개의 요청과 응답 info : 어플리케이션 관련정보 loggers : 어플리케이션 로킹레벨과 수정 met..

SpringBoot 2020.11.08

Rest 클라이언트 커스터마이징

WebClient Reactor Netty 의 HTTP 사용 지역 설정 : 체인 메서드 전역 설정 : RestTemplateCustomizer 빈 생성 @Component public class NoneBlockingRestRunner implements ApplicationRunner { @Autowired private WebClient.Builder builder; @Override public void run(ApplicationArguments args) throws Exception { WebClient webClient = builder.baseUrl("http://localhost:8080").build(); StopWatch stopWatch = new StopWatch(); stopWa..

SpringBoot 2020.11.08

RestTemplate / WebClient

RestTemplate RestTemplate : 블로킹 I/O 기반 동기 API RestTemplateAutoConfiguration 프로젝트 spring-web 모듈 존재시 RestTemplateBuilder를 빈으로 등록함 WebClient 논 블로킹 I/O 기반 비동기 API WebClientAutoConfiguration 프로젝트 spring-webflux 모듈 존재시 WebClient.Builder 빈을 등록해 줌 결과 적으로 동기, 비동기에 따라 RestTemplateBuilder , WebClient.Builder 를 사용해서 객체를 빌딩하여 사용하게 된다. 빌더 패턴이므로 체인 api 도 존재함 @RestController public class SampleController { @Get..

SpringBoot 2020.11.08

MongoDB

MongoDB JSON 기반의 도큐먼트 데이터베이스로 Schema 가 없다는 것이 특성이다. 필요의존 org.springframework.boot spring-boot-starter-data-mongodb spring-boot-starter-data-mongo 추가 시 스프링 부트에서 지원해주는 객체들 MongoTemplate MongoRepository : Jpa 처럼 상속 public interface MongoRepository extends org.springframework.data.mongodb.repository.MongoRepository { Optional findByEmail(String email); } 스프링부트가 기본적으로 접속하려는 포트는 몽고 db의 27017. 즉, 설정할 필..

SpringBoot 2020.11.08

데이터베이스마이그레이션

데이터베이스마이그레이션 DB 스키마, 데이터 변경을 버전 관리하는 것 기존 DB 와의 변경점을 sql 파일로 관리한다. 필요의존 org.flywaydb flyway-core 마이그레이션 파일 적용 위치 classpath:db/migration 폴더 밑에 sql 파일작성 이름은 V숫자__이름.sql 스프링부트 2 이상 부터 해당 설정을 적용해줘야함 spring.flyway.baseline-on-migrate=true Flyway 플라이웨이가 실행하면 만들어지는 테이블들 기본 테이블 : 만든 테이블 flyway_schema_history : 플라이웨이 정보 ( 이름, 시간, 성공여부 등 ) 한번 적용된 마이그레이션 파일은 절대로 건들지말라. sql 파일을 새로 만들어 변경점을 적용시켜야 한다.

SpringBoot 2020.11.08

JPA 사용시 데이터베이스 스키마 초기화 및 데이터 사용 방법

설정 없이 테스트시 스키마를 생성하지만, 어플리케이션 실행시에는 테이블을 생성하지 않는다. spring.jpa.hibernate.ddl.auto create : 구동시 삭제후 새로 생성 create-drop : 구동시 생성, 종료시 삭제 update : 기존 스키마에서 추가 부분만 생성 validate : 엔티티 맵핑이 현재 릴레이션에 맵핑 가능한지 검증만 한다. ( 변경 x ) spring.jpa.generate.ddl 기본 값은 false (validate 시, 즉 운영시 사용함이 바람직) true 설정해야 자동으로 스키마를 만든다. 두 속성은 같이 설정되어야 동작한다. spring.jpa.show-sql 기본 값 false true 설정시 로그가 띄워진다. application.properties ..

SpringBoot 2020.11.08

JPA 사용

스프링에서는 @EnableJpaRepositories 를 사용해야한다. 스프링 부트에서는 이미 해당 설정이 완료되어 있기에 적용할 필요가 없다. 설정 방법 @Entity 클래스 생성 @Id 는 식별자를 의미하며 @GenerateValue 는 자동 생성 값을 의미한다. Entity 객체는 JavaBean 스펙을 따른다. @Entity public class Account { @Id @GeneratedValue private Long id; private String username; private String password; @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() !..

SpringBoot 2020.11.08

Spring Data JPA 개요

ORM 과 JPA ORM : 객체 관계 맵핑 JPA : 자바 퍼시스턴스 API, ORM 을 위한 자바 표준 객체와 릴레이션을 맵핑시킬때 발생하는 개념 불일치를 해결하는 프레임워크다. org.springframework.boot spring-boot-starter-data-jpa 개념 불일치의 예 테이블 과 컬럼을 어떻게 객체에 맵핑시킬 것인가 객체의 상속관계를 어떻게 테이블로 맵핑할 것인가. identifier 는 어떻게 설정할 것인가. Spring-Data-JPA JPA 표준스팩을 쉽게 사용할 수 있게 Spring-Data 로 추상화 한 것 사용흐름 Spring-Data-JPA 가 JPA를 실행 JPA가 Hibernate 실행 Hibernate 가 DataSource 를 실행함

SpringBoot 2020.11.08