개발/Spring 11

Spring boot profile(AWS Secret Manager, Log4j2)

build 또는 run 할 때, local,dev,prod 환경으로 진행 할 수 있다. gradle implementation 'org.springframework.cloud:spring-cloud-starter-bootstrap:3.0.3' implementation 'org.springframework.cloud:spring-cloud-starter-aws-secrets-manager-config:2.2.6.RELEASE' implementation group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.17.1' implementation group: 'org.apache.logging.log4j', name: 'log4j-core', ..

개발/Spring 2022.04.06

Spring boot Data JPA Hikari Master/Slave (Write,Read Only) 사용하기.

DATA JPA를 사용할 때, read only와 write db를 따로 구성해서 서버 성능을 올리고 싶을때 사용한다. import java.util.HashMap; import java.util.Map; import javax.sql.DataSource; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.jdbc.DataSourceBuilder; import org.springframework.context.annotation.Bean; import ..

개발/Spring 2022.04.06

Spring boot&React Cookie 설정 SameSite Cookie 변경된 크롬 80 쿠키 정책

이전에 쿠키 설정하던게 쿠키 정책 변경으로 갑자기 작동하지 않았다. 왜 안되는지는 검색해보면 아주 잘 나와있다(귀찮아서 아님.. 잘 설명할 자신이 없기에,,) 다만, 쿠키 domain을 설정할 때, .이 2개 들어가야 한다는 조항은 없어진듯 하다. spring boot 와 react에서 적용하는 방법에 대해 기술한다. # cors cors.allowed-origins=http://localhost:3000 cors.allowed-methods=GET,POST,PUT,DELETE,OPTIONS cors.allowed-headers=* cors.exposed-headers=Set-Cookie cors.max-age=3600 #domain mypage.domain=localhost properties에 이렇게..

개발/Spring 2022.04.06

Part.2 Spring boot 갯수 제한 이벤트 구현(Redis 이용) Redisson, Transaction, Sync(lock) 유저가 많이 몰릴때.

Part.1 에서 싱크를 걸었기 때문에 유저가 많이 몰릴경우 속도가 많이 느려진다. 그래서 Lock 영역에서 막는 것은 Redis로 처리하고 db insert 처리는 thread 로 처리한다. import java.time.LocalDateTime; import java.util.concurrent.TimeUnit; import org.redisson.api.RBucket; import org.redisson.api.RTransaction; import org.springframework.stereotype.Service; import org.springframework.transaction.TransactionStatus; import org.springframework.transaction.annot..

개발/Spring 2022.04.06

Spring @RequestParam @RequestBody @ModelAttribute 차이

1. @RequestParam 1개의 HTT 요청 파라미터를 받기 위해서 사용한다. 예제 @GetMapping("/api/foos") @ResponseBody public String getFoos(@RequestParam String id) { return "ID: " + id; } @RequestParam을 이용해서 id 쿼리 매개변수를 추출한다. 속성 1. name 위의 예제에서는 변수 이름과 매개변수 이름이 동일한데, 이를 다르게 설정할 수도 있다. @PostMapping("/api/foos") @ResponseBody public String addFoo(@RequestParam(name = "id") String fooId, @RequestParam String name) { return "I..

개발/Spring 2022.03.20

Part.1 Spring boot 갯수 제한 이벤트 구현(Redis 이용) Redisson, Transaction, Sync(lock) 유저가 많이 몰릴때.

갯수 제한 이벤트시 순삭당하는 경우가 있습니다. 멀티 쓰레드 환경에서 sync하고 atomic하게 구현해야 정확하게 갯수에 맞춰서 사용자에게 서비스를 제공할 수 있습니다. 그러한 check를 db를 사용하기에는 너무 느리기에 redis를 사용하여 구현하였습니다. 일반 Spring boot에서 사용하는 Jedis 와 Lettuce는 lock 구현이 안되어 있어 redisson을 사용해야 합니다. 정확히는 스핀락을 사용하지 않는 pub/sub 기반으로 사용하려고 redisson을 사용합니다. gradle implementation 'org.redisson:redisson-spring-boot-starter:3.16.8' application.properties # Redis spring.redis.host=..

개발/Spring 2022.03.19

Spring boot NHN Cloud api-alimtalk 2.2 사용하기

NHN Cloud에서 알림톡을 사용하였습니다. 알림톡 가이드 : https://docs.toast.com/ko/Notification/KakaoTalk%20Bizmessage/ko/alimtalk-api-guide/ API v2.2 가이드 - NHN Cloud 사용자 가이드 Notification > KakaoTalk Bizmessage > Alimtalk > API v2.2 Guide Alimtalk [API Domain] Domain https://api-alimtalk.cloud.toast.com Overview of v2.2 API 알림톡 대량 발송 조회, 통계 조회 API가 추가되었습니다. 메시지 치환 발송 API docs.toast.com 메시지 치환 발송 요청 [URL] POST /alimt..

개발/Spring 2022.03.19

Spring boot s3 이미지 Upload, url 이미지 다운로드하기

소셜 로그인해서 프로필 사진을 s3에 업로드 하거나 이미지를 수정해서 s3에 올려야 하는 경우가 있었다. s3Manager를 만들어서 모듈화 했다. import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.URL; import java.util.Optional; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import org.springfra..

개발/Spring 2022.03.19