spring
-
Spring Boot: Repository Extension 패턴 (CustomRepositoryImpl)컴퓨터/Spring Boot 2024. 5. 8. 15:12
소개프로젝트들을 보다 보면 가끔 RepositoryImpl과 같은 파일을 본 적이 있다.그냥 Repository를 다르게 구현한 것일까 하고 넘어갔다가 개발을 하다가 위 방식으로 해결했다. 문제MySQL 에서 spatial 타입을 사용 중이다.POINT 타입으로 저장되어 있기 때문에 클라이언트 JSON에서는latitude/longitude (경/위도)로 float64 (double) 타입으로 반환하고 싶었다.@Entity@Table(name = "Markers")public class Marker { @Id @Column(name = "MarkerID") private Integer markerID; @Column(columnDefinition = "geometry(Point, 43..
-
Spring boot + Kotlin Coroutine + WebFlux + Security 5 + MySQL 기본 셋업컴퓨터/Spring Boot 2024. 3. 18. 21:31
Spring boot 2.7에서 kotlin coroutine을 써서 webflux를 사용할 것이다. (JDK 17) 시큐리티는 기본 셋업에 R2DBC MySQL을 써서 연결했다. gradle-kts 버전이다. MySQL 테이블 Geolocation Spatial 타입을 갖고 있는 간단한 table이다. CREATE TABLE Markers ( MarkerID INT AUTO_INCREMENT PRIMARY KEY, UserID INT NULL, Location POINT NOT NULL SRID 4326, -- SRID Description VARCHAR(255), CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP, UpdatedAt TIMESTAMP DEFAULT CU..
-
Spring boot: websocket 서버 확장 도전 및 Kafka컴퓨터/Kafka 2023. 12. 24. 13:23
소개 같은 Spring boot 웹소켓 서버 (실시간 채팅을 위한)를 scale-out 하는 (같은 서버를 여러 다른 포트에서) 과정을 담았다. 문제 여기서 마주친 문제는, 여러 다른 포트에서 열린 웹소켓 서버에서 같은 하나의 채팅 방에 있는 유저들끼리 어떻게 통신할 수 있을까? (예: 8081 포트 서버에서 "spring"이란 채팅 방, 8082 포트 서버에서 "spring"이란 채팅 방, 서로 같은 메시지를 봐야 한다.) Sticky Session 처음 떠올린 건 스티키 세션이다. 사용자를 특정 서버 인스턴스에 '고정'해서, 모든 요청이 같은 서버로 라우팅 되도록 하는 기술이다. (세션 데이터 일관성 유지) 웹소켓의 경우, 연결이 한 번 맺어지면 계속 유지되므로, 스티키 세션의 효과가 제한적일 수 있..
-
K6/JMeter로 WebSocket 성능 테스트 해보기 (nginx 로드 밸런서)컴퓨터 2023. 12. 21. 01:08
소개: Spring Boot 프로젝트에 마이크로서비스로 쓰일 채팅 웹소켓 서버를 Rust 및 Spring Boot WebFlux 버전으로 만들고 K6 및 JMeter를 이용해 로드 테스트를 해볼 것이다. i5-10600KF (6코어 - 가상 12) CPU와 24GB 컴퓨터 로컬에서 테스트한 과정이다. n명의 유저 중 80%가 트위터 예전 기준 140 단어 기준 (약 1KB) 메시지를 전송한다. (Lorem ipsum) Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse porttitor quam vitae aliquet faucibus. In condimentum mi id accumsan ullamcorper. Fusce conva..
-
Spring Boot: Kotlin + ScyllaDB 도커 시작컴퓨터/Spring Boot 2023. 12. 14. 21:34
Datastax 드라이버로 Configuration을 만들고 간단한 도메인을 만들어서 저장하는 과정을 썼다. 풀소스는 아래 github에서 참고. GitHub - Alfex4936/spring-boot-kotlin-scylladb-demo: Spring Boot written in Kotlin with two scyllaDB nodes in Docker Spring Boot written in Kotlin with two scyllaDB nodes in Docker - GitHub - Alfex4936/spring-boot-kotlin-scylladb-demo: Spring Boot written in Kotlin with two scyllaDB nodes in Docker github.com DataS..
-
Spring boot: Github Action CI에 JaCoCo + CodeCov컴퓨터/JAVA 2023. 12. 3. 18:32
할 것: Github Action을 이용하여 JaCoCo 테스트 커버리지 결과를 CodeCov 하는 과정 CI를 만들 것이다. 필요: Codecov - The Leading Code Coverage Solution Code coverage reporting solution for any test suite — Codecov gives developers actionable insights to deploy reliable code with confidence. about.codecov.io 위 사이트에 로그인해서 레포지토리를 선택한다. 그리고 CODECOV 토큰을 받아서 Github 설정 secret에 넣어준다. Github Action CI 최상위 폴더에서 java라는 폴더에 스프링 부트 프로젝트가 있..
-
Spring Boot: Mailsender HTML 보내기컴퓨터/HTML & JS & TS 2023. 11. 28. 17:32
templates에 있는 passcode.html을 사용하려고 아래처럼 thymeleaf 엔진 설정을 했다. spring: thymeleaf: cache: false prefix: classpath:/templates/ Bean 하나 만들어준다. 구글을 사용했다. @Configuration public class EmailConfig { @Value("${spring.mail.username}") private String FROM_ADDRESS; @Value("${spring.mail.password}") private String EMAIL_PASSWORD; @Bean public JavaMailSender javaMailService() { JavaMailSenderImpl javaMailSende..
-
Java: spring boot AWS opensearch 연동하기컴퓨터/JAVA 2023. 10. 9. 18:38
@코드로 참고하기 우선 AWS 보안 자격 증명에서 IAM을 하나 만든다. https://us-east-1.console.aws.amazon.com/iamv2/home#/security_credentials us-east-1.console.aws.amazon.com dependencies spring boot v3.1 + gradle 기준; 버전이 까다로울 수 있다. 각각 패키지를 검색하면 elastic은 무슨 버전까지 지원하고 그런 표가 다 있으니 확인하면 편한다. dependencies { ... implementation group: 'org.springframework.cloud', name: 'spring-cloud-starter-aws', version: '2.2.6.RELEASE' // AWS..