자바(10)
-
Java Spring - 공부 여정
HTML 삽입 미리보기할 수 없는 소스 #1. 스프링 / 스프링 부트란 스프링 자바 기반 웹 앱 프레임워크 스프링 구조 spring은 자바 객체와 라이브러리들을 관리해주며, 톰켓과 같은 WAS 가 내장되어 있어 자바 웹 앱을 구동할 수 있음 경량 컨테이너 (bean) 로 자바 객체를 spring 안에서 관리. 객체의 생성 및 소멸과 같은 생명 주기를 관리하며, spring 컨테이너에서 필요한 객체를 가져와 사용. spring의 특징 IOC / DI IOC - 제어의 역전 DI - 의존성 주입 어떤 객체를 사용하는 주체가 객체를 직접 생성하는 게 아니라 객체를 spring에서 생성해서 사용하려는 주체 객체에 주입시켜주는 방식. 직접 생성하는 것보다 외부에서 생성 관리하는 이 방식이 주체 객체와 대상 객체의..
2024.03.16 -
스웨거(Swagger) - @ExampleObject value 속 긴 String 분리 과정 정리
HTML 삽입 미리보기할 수 없는 소스 #0. 개요 controller에서 put / post method API 를 swagger 에 작성할 때, 스키마 뿐만 아니라, ExampleObject 코드로도 request body 가 어떤 모양이어야 하는 지 프론트엔드에게 설명을 해주고 싶다. 원할한 프론트 - 백 소통을 위해 그러나, controller의 코드가 swagger example value 문자열 때문에 너무 길어져서 백엔드 코드 가독성이 떨어졌다 심지어 exampleObject가 controller 마다 여러개 일 수도 있고, request Body Dto Class가 property 가 많으면 종잡을 수가 없다. @PostMapping("/item") @Operation(description..
2024.03.15 -
스웨거(Swagger) - 어노테이션 간단 정리
HTML 삽입 미리보기할 수 없는 소스 #0. 개요 원활한 프론트 - 백 소통을 위해, 개발하는 동시에 API 명세서를 만들어주는 swagger를 작성하는데에 소홀히하면 안 된다. 백엔드 개발자는 코드를 직접 구현하여서, 스웨거를 통해 API 가 잘 호출되고, 결과가 이상적으로 리턴만 되는 것을 보면 스웨거도 잘 구현이 되었다고 생각을 하지만, 코드를 보지 못 하는 프론트엔드 개발자 입장에서는 각 API의 response / request 가 어떤 모양인지, 또한 각 Dto의 property 가 값의 유효 범위가 어떻게 되는지, 의미하는 바가 뭔지 알 수 있길 원한다. 그렇기에 스웨거가 제공해주는 여러 어노테이션을 활용해 스웨거 문서를 직관적으로 꾸며보자 #1. 어노테이션 종류 1. @Operation ..
2024.03.14 -
DTO 상속에 대하여
#1. 개요 API를 구현할 때 기획과 프론트엔드의 요구로 인해 기존 Dto에 property 가 하나씩 추가되어야할 때가 있다. 호출되는 데이터의 DB 스키마가 변경되지 않더라도 말이다! 처음에 기존 Dto에 계속 property 를 추가했더니 하나의 Dto가 너무 커지고, 여러 API에 쓰이기 시작했다. 결과적으로 스웨거에 스키마가 올라갔을 때, 각 API에서 안 쓰이는 property 가 많아졌다. 이는 백엔드, 프론트엔드 양쪽에 다 여간 불편한 것이 아니었다. 그렇기에 Dto를 여러 개로 나누려했다. 그러나 나누려하는 이 Dto들은 결국 비슷한 정보를 리턴하기에, 겹치는 정보가 많았다. 그렇기에 아예 분리를 하기보다, 상속을 하는 것이 제일 좋은 판단이라고 생각했다. 그리고 분류를 해보면 보통 같..
2024.03.14 -
Java Spring - Cache 도입기 (2 / 2): Redis 적용기
HTML 삽입 미리보기할 수 없는 소스 #1. Redis 설정 기록 1. 라이브러리 추가 https://velog.io/@qotndus43/Cache 1) 그래들 추가 dependencies { // Spring Boot Starters implementation 'org.springframework.boot:spring-boot-starter-data-redis' implementation 'org.springframework.boot:spring-boot-starter-cache' // Other dependencies } 2) redis 설정 spring: data: redis: host: localhost port: 6379 각 yaml 파일마다 별도의 host를 갖게 해도 괜찮음 그러면 각 서버..
2024.03.14 -
Java Spring - Cache 도입기 (1 / 2): 어떤 캐시를 쓸까?
HTML 삽입 미리보기할 수 없는 소스 #1. 캐싱 툴 조사 Ehcache vs. Redis vs. Memcached 1. Spring boot Starter cache 💡 스프링 부트에서 캐시를 사용할 수 있게끔 해줌 스프링 부트에서 제공하는 캐싱 추상화를 활성화하기 위한 스터터 의존성. 앱 단에서 어떤 캐시 구현체를 사용할 지 명시하지 않으면, 스프링 부트는 기본적으로 간단한 로컬 메모리 캐시를 사용함. 즉 해당 스타터를 사용하여 캐싱을 활성화하고, ehcache 등 캐시 구현체를 지정할 수 있음. 사용 방법 그래들 추가 컨피그 추가 서비스에 어노테이션 추가 ehcache 와 동일 2. Ehcache 💡 스프링에서 캐시를 어떻게 사용할 지 정해주는 어노테이션을 제공하는 라이브러리 https://vel..
2024.03.14