본문 바로가기

springboot28

Spring REST API - 인증 Spring REST API - 인증 인증 엔터티를 하나 만들어보자. @Entity @Getter @Setter @EqualsAndHashCode(of = "id") @Builder @AllArgsConstructor @NoArgsConstructor public class Account { @Id @GeneratedValue private Integer id; private String email; private String password; @ElementCollection(fetch = FetchType.EAGER) @Enumerated(EnumType.STRING) private Set roles; } roles 필드는 권한 정보를 담고 있는 enum 타입의 필드이다. 여러 값을 가지는데, @El.. 2021. 1. 29.
Spring REST API - 입력값 처리 Spring REST API - 입력값 처리 테스트하면서 입력값을 제한해야 하는 필드가 있다. 예를 들어 자동 생성되도록 설정된 id 나 계산해야하는 값들이다. 이를 DTO 사용해서 해결해보자. jackson 라이브러리를 통해 json 어노테이션을 붙이는 방법도 있다. 에노테이션이 다닥다닥 많이 붙어서 가독성이 안좋아 질가봐 DTO를 따로 만드는 예제를 만든다. DTO (Data Transfer Object) 에 Entity 객체로부터 입력이 필요한 필드만 가지고와서 모델을 새로 정의한다. @Builder @AllArgsConstructor @NoArgsConstructor @Data public class EventDto { private String name; private String descrip.. 2021. 1. 23.
Spring REST API TEST Spring REST API - 이벤트 생성 API 테스트 @WebMvcTest @WebMvcTest 는 슬라이싱 테스트다. 웹과 관련된 빈들을 등록해준다. DispatcherServlet, EventController, 여러 Data Handler, Mapper, Converter 가 조합이 된 상태로 진행되는 테스트이므로 단위테스트는 아니다. 또한 MockMvc 빈을 자동으로 등록해주므로, 그대로 주입하여 사용하면 편리하다. MockMvc 스프링 MVC 테스트의 핵심 클래스로, 웹 서버를 띄우지 않아도 스프링 MVC (DispatcherServlet)가 요청을 처리하는 과정을 확인할 수 있다. 때문에 컨트롤러 테스트로 자주 사용된다. Test1) 201 응답 받기 1) Headers 의 locatio.. 2021. 1. 22.
Spring REST API Spring REST API - REST API, 도메인 REST API 란? API : Application Programming Interface REST : REpresentational State Transfer, 인터넷 상 시스템 간 상호 운용성(interoperability)을 제공하는 방법 중 하나다. 통신 방법으로 주로 HTTP를 사용한다. 시스템 각각의 독립적인 진화를 보장하기 위한 아키텍처이다. REST 아키텍처 스타일 클라이언트-서버 Stateless Cache Uniform Interface Layered System Code-On-Demand (선택) REST 아키텍처 스타일 중 uniform Interface 에서 self-descrive messages 와 HATEOAS 가 대.. 2021. 1. 22.
Springboot - Actuator, 운영 Springboot - Actuator Actuator 는 스프링부트 운영 중 유용한 기능을 제공한다. 엔드포인트, 메트릭스, 모니터링 기능 등을 알아보자. Endpoint 아래 ID에 해당하는 모듈들이 모두 활성화 된다.(shutdown 제외) auditevents : 인증 정보 등록 beans : 빈들 conditions : 자동 설정 여부와 이유 configprops : application.properties 에 정의 가능한 프로퍼티들 env : 스프링 environment 를 등록 flyway : 마이그레이션 정보 liquibase : 마이그레이션 정보 health : 애플리케이션의 정상 가동 유무 httptrace : 최근 100개 HTTP 요청/응답 info : application 관련 된.. 2021. 1. 21.
Springboot - Spring REST Client Springboot - Spring REST Client RestTemplate, WebClient 는 기존 spring-web 에 있던 모듈이다. 스프링부트는 이들을 Builder 로 감싸서 빈으로 등록해주고, 편안한 기능을 제공해준다. RestTemplate Blocking I/O 기반의 Synchronous API 이다. spring-boot-starter-web 의존성을 등록하면, RestTemplateAutoConfiguration 이 자동 설정된다. 또한 RestTemplateBuilder 를 빈으로 자동 등록해준다. 우선 예제를 위해 컨트롤러를 등록해주자. @RestController public class MarketController { @GetMapping("/fruit") public.. 2021. 1. 21.
Springboot - Security Springboot - Spring Strarter Security Spring Security 스프링 시큐리티는 웹 시큐리티, 메소드 시큐리티와 다양한 인증 방법(LDAP, 폼 인증, Basic 인증, Auth)을 지원한다. 3개의 페이지를 만들어 security 를 알아보자. index, home 페이지는 모든 사용자가 접속하고, my 페이지는 본인만(인가된 사람만) 접근하는 것을 만들것이다. 스타터 웹과 타임리프를 의존성에 추가한다. org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-thymeleaf 컨트롤러를 등록하자. @Controller public class HomeContr.. 2021. 1. 21.
Spring Data - MongoDB Springboot - Spring Data - MongoDB MongoDB 는 json 기반의 다큐먼트 데이터베이스이다. 스프링부트와 연동하여 사용하는 방법을 알아보자. 의존성을 추가한다. pom.xml org.springframework.boot spring-boot-starter-data-mongodb MongoDB 설치, 실행 docker 를 통해 mongodb를 설치하고 실행한다. $ docker run -p 27017:27017 --name springboot-mongodb -d mongo 스프링부트가 localhost:27017 에 기본으로 mongodb 서버를 연동한다. 따라서 로컬 db 27017:도커 db 27017 를 연결해준다. mongo 데몬을 실행시킨다. 몽고 도커 컨테이너를 실.. 2021. 1. 21.
Spring Data - Redis Springboot - Spring Data - Redis RDB 가 아닌 NoSQL 과 스프링 데이터를 연동해보자. 1) Redis 를 연동하기 위해 의존성을 추가해준다. pom.xml org.springframework.boot spring-boot-starter-data-redis 2) 로컬에 Redis 서버를 띄우기 위해 도커를 사용한다. $ docker run -p 6379:6379 --name springboot-redis -d redis Redis 는 6379가 기본포트이고, 로컬의 6379 포트와 도커 안 6379 포트를 연결해준다. 3) 도커 컨테이너를 실행시킨다. $ docker exec -it springboot-redis redis-cli 4) 자바에서 템플릿으로는 StringRed.. 2021. 1. 21.
Spring Data - Neo4j 사용 Springboot Spring Data - Neo4j Neo4j는 노드와 연관관계를 영속화하는데에 RDB 보다 다양한 장점이 있는 데이터베이스이다. 의존성추가 pom.xml org.springframework.boot spring-boot-starter-data-neo4j Docker로 Neo4j 설치, 실행 $ docker run -p 7474:7474 -p 7687:7687 --name springboot-neo4j -d neo4j http 프로토콜용 포트(7474), 볼트(bolt) 프로토콜용 포트(7687)를 각각 매핑해주어야 한다. 7474 포트에서 동작하는 브라우저가 서버에 매핑 될 수 있다. -d 데몬 옵션으로 neo4j 이미지를 실행한다. (이미지가 없으면 자동으로 docker hub에서.. 2021. 1. 20.
728x90