API 9

스프링 스케줄러와 배치 #1 - Spring Scheduler(@Scheduled), TaskScheduler

스케줄러란?특정 작업을 예약된 시점에 수행 가능하도록 스프링 프레임워크에서 제공하는 기능사옹 예 ) 예약 알림, 이메일 전송, 피드 알림 등등  - 프로젝트 설정 - 스케줄러 사용 시 옵션 정리fixedRate이전 작업 시작 시점 기준, 주기적으로 실행fixedRate = 5000작업 시작 후 5초마다 실행fixedDelay이전 작업 종료 시점 기준, 주기적으로 실행fixedDelay = 5000작업 종료 후 5초 뒤 실행initialDelay작업 시작 전 대기 시간 설정fixedRate = 5000, initialDelay = 1000010초 대기 후 5초마다 실행cronCron 표현식을 사용해 일정 예약cron = "0 0/5 * * * *"매 5분마다 실행zone타임존 설정 (기본은 시스템 타임존 ..

API 2025.03.09

Spring AOP 설명(Annotaion, Class) 및 예제

어노테이션 먼저 정리1. @Before설명: 지정된 포인트컷 이전에 실행되는 어드바이스2. @After설명: 지정된 포인트컷 후에 실행되는 어드바이스 메소드 실행 여부와 관계없이 항상 실행3. @AfterReturning설명: 지정된 포인트컷의 메소드가 정상적으로 실행된 후에 실행되는 어드바이스 메소드가 예외 없이 정상적으로 종료되었을 때만 실행4. @AfterThrowing설명: 지정된 포인트컷의 메소드가 예외를 던졌을 때 실행5. @Around설명: 지정된 포인트컷 전후로 실행되며, 메소드의 실행을 제어 @Before와 @After를 합친 효과를 제공 ProceedingJoinPoint를 이용하여 메소드 실행을 직접 제어 가능6. @Pointcut설명: 어드바이스가 적용될 포인트컷 표현식을 정의하는 ..

API 2025.01.17

#2 TEST CODE 작성 : Todo API 단위테스트, 통합테스트

https://letsdodev.tistory.com/211에서 작업했던 Todo API 에서 단위테스트, 통합테스트를 진행한다. #1 TEST CODE 작성 : Todo API 만들기※ 테스트 코드 작성 이전, 테스트 코드 작성에 필요한 Todo API 작성해서 기록한 게시물※  테스트 코드는 다음 게시물에 작성 예정[프로젝트 생성]- 스프링 이니셜라이저 사용spring-boot : 3.4.0 verjaletsdodev.tistory.com  @WebMvcTest vs @SpringBootTest@WebMvcTest:컨트롤러만 로드하고, 그 외의 빈(서비스, 리포지토리 등)은 로드하지 않음빈 로딩 범위: 컨트롤러만 로드, 서비스나 리포지토리와 같은 다른 빈은 자동 로드되지 않음주로 웹 계층 테스트에 사..

API 2025.01.02

#1 TEST CODE 작성 : Todo API 만들기

※ 테스트 코드 작성 이전, 테스트 코드 작성에 필요한 Todo API 작성해서 기록한 게시물※  테스트 코드는 다음 게시물에 작성 예정[프로젝트 생성]- 스프링 이니셜라이저 사용spring-boot : 3.4.0 verjava(jdk) : 21 (lombok 추가하지 않았고 소스로 직접 작성하여 사용)   [패키지 구조][프로젝트 소스 및 환경 설정]- build.gradleplugins { id 'java' id 'org.springframework.boot' version '3.4.0' id 'io.spring.dependency-management' version '1.1.6'}group = 'com.testcode'version = '0.0.1-SNAPSHOT'java { toolchain { ..

API 2024.12.14

[spring webSocket - 스프링 웹소켓] : 간이 채팅방 구현

구조 채팅방 입장 시 웹소켓 connect~웹소켓 연결 성공 시, 종료 시 프론트 웹소켓 이벤트 핸들러로 채팅방 입·퇴장 메시지 해당 채팅방 유저들에게 message send채팅방 최초 입장 시 REST API 로 해당 채팅방 대화기록 모두 불러와서 화면에 뿌려줌채팅 참여자들이 메시지 보내면 [프론트 message send -> 백 webSocketHandler 데이터 처리]로 DB에 데이터 적재 및 해당 사용자들에세 session message send   #1 스프링 이니셜라이저로 프로젝트 생성- 채팅방 같이 DB 적재가 자주 일어나야 하는 API 의 경우 NOSQL DB를 사용해야 하지만 - 나는 WebSocket 을 사용하며 개발을 진행한다는 것에 중점을 두어 그냥 MYSQL 을 사용하기로 하였다..

API 2024.09.16

WebSocketHandler - 오버라이드 메소드, override method 정리

import org.springframework.web.socket.*;import org.springframework.web.socket.handler.TextWebSocketHandler;public class CustomWebSocketHandler extends TextWebSocketHandler { // WebSocket 연결이 성립되었을 때 호출되는 메서드 @Override public void afterConnectionEstablished(WebSocketSession session) throws Exception { // 새로운 WebSocket 연결이 성립되었을 때 실행되는 로직을 여기에 작성 System.out.println("웹소켓 연결됨:..

API 2024.09.16

메일 API : 이메일 보내기 API - (구글, 스프링부트)

# 1 스프링 이니셜라이저를 통한 세팅앱 비밀번호가 프로젝트 내 smtp 설정에서 password로 사용될 것이다.※발급 시에만 보여지기 때문에 따로 메모장에 별도로 저장해두자 ※   # 2 build gradleplugins { id 'java' id 'org.springframework.boot' version '3.3.0' id 'io.spring.dependency-management' version '1.1.5'}group = 'com.static'version = '0.0.1-SNAPSHOT'java { sourceCompatibility = '21'}configurations { compileOnly { extendsFrom annotationProcessor }}repositories {..

API 2024.05.29

Security/OAuth2(구글로그인)/JWT(access, refresh) 발행 및 저장 -개인 복습(API) 1부

해당 게시물 목차구글 로그인 (OAuth2 로그인) + 토큰 관리일반로그인 + 이메일 인증 java : 21framework : spring bootide : intelliJbuild tool : gradleview : react(로그인까지만 thymeleaf)db : mysql 8etc : jpa (프론트는 리액트로 개발할 것이나 일단 로그인 기능까지만 thymeleaf로 테스트하며 작업할 예정) - pom.xmlplugins { id 'java' id 'org.springframework.boot' version '3.2.5' id 'io.spring.dependency-management' version '1.1.4'}group = 'com.login'version = '0.0.1-SNAPSHOT'..

API 2024.05.01

[API] 다중 파일 업로드 & 다운로드 (Ver. Part)

[준비] IDE : 인텔리제이 java : java version "21.0.2" 2024-01-16 LTS DB : MySQL 8 View : thymeleaf (거의 사용 안 함) 기타 : PostMan , 스프링 이니셜라이저 사용 (Dependecy는 아래 build.gradle 코드 확인) build : gradle [project 구조] [ application.yml ] server: port: 8080 spring: datasource: url: "jdbc:mysql://localhost/files" username: "root" password: "각자 root 사용자 비밀번호" driver-class-name: com.mysql.cj.jdbc.Driver jpa: hibernate: dd..

API 2024.03.24