본문 바로가기

springboot29

S3 presigned url, Springboot 연동 S3 presigned url, Springboot 연동 이미지를 저장하고, 조회하는 역할로 클라우드 서비스(AWS S3)를 활용하면 이점이 많다. 이미지 저장소를 직접 구축하지 않아도 된다. 파일 접근 권한을 손쉽게 설정할 수 있다. 모두 접근가능하게도 할 수 있고, 특정 권한을 가진 사용자만 접근가능하게도 할 수 있다. 데이터 전송 속도를 관리할 수 있다. (전송 가속화) 저장소를 쉽게 모니터링 할 수 있다. 저장소 안정성이 높다. 믿고 맡길 수 있다. 파일 저장소를 S3 로 선택했다면, 이미지를 어떤 방식으로 저장하고 조회할 것인지 고민이 된다. 여기서는 presigned url 을 통해, 이미지를 업로드하고 조회하는 방식을 알아본다. 1) S3 버킷 준비 AWS S3 에서 버킷을 생성하고, 폴더까.. 2022. 11. 24.
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.
728x90