spring boot
-
애그리거트 이해를 통한 도메인 설계Tech 2025. 6. 22. 19:13
애그리거트는 복잡한 도메인 모델을 효율적으로 관리하는 단위입니다. 이 글에서는 애그리거트의 개념과 활용에 대해 알아보겠습니다.≡ 목차 애그리거트의 정의와 중요성 애그리거트란 무엇인가 복잡한 도메인 관리의 필요성 애그리거트의 주요 기능 애그리거트 루트 역할 이해하기 애그리거트 루트의 기능 도메인 규칙과 일관성 유지 주문 애그리거트의 예 애그리거트 간 관계 설정하기 1-n 및 m-n 관계의 이해 애그리거트 경계 설정 관계 설정 시 주의사항 도메인 이벤트와 트랜잭션 관리 도메인 이벤트의 역할 애그리거트의 트랜잭션 범위 동시성 관리 결론 애그리거트를 팩토리로 활용하기 팩토리 역할의 이해 애그리거트의 객체 생성 도메인 로직 응집도 높이기 함께보면 좋은글! 비개발자를 위한 ..
-
Spring Boot와 Vscode로 프로젝트 시작하기Tech 2025. 6. 13. 13:42
Spring Boot로 복잡한 웹 애플리케이션을 쉽게 개발할 수 있는 방법을 알아보겠습니다. Vscode와 함께 프로젝트를 설정하는 과정은 효율성을 높이는 중요한 단계입니다.≡ 목차 Spring Boot 프로젝트 생성 방법 Gradle로 프로젝트 시작하기 Spring Initializr 설정 단계 필수 의존성 선택하기 Vscode에서 프로젝트 관리 프로젝트 구조 이해하기 Vscode의 유용한 기능 활용 터미널 사용법 Spring Boot 실행 방법 Java Application으로 실행하기 Spring Boot Dashboard 활용 디버깅 및 오류 처리 build.gradle 파일 수정 의존성 추가 및 관리 플러그인 설정 프로젝트 빌드 방법 프로젝트 발전 방향 기타 프레..
-
Spring Boot 애플리케이션 종료 시 안전하게 파일 백업 처리하기Tech/SpringBoot 2025. 6. 8. 21:55
Spring Boot 애플리케이션을 개발할 때, 서비스 종료 시 파일 백업이나 리소스 정리 같은 작업이 필요한 경우가 많습니다. 이 글에서는 애플리케이션 종료 시 안전하게 파일을 백업하는 방법을 두 가지 방식으로 소개합니다.@PreDestroy를 이용한 Spring Bean 종료 훅JVM 레벨에서 작동하는 Shutdown Hook✅ 환경 설정 (Gradle)// build.gradle.ktsplugins { id("org.springframework.boot") version "3.2.5" id("io.spring.dependency-management") version "1.1.4" kotlin("jvm") version "1.9.23" kotlin("plugin.spring") ..
-
spring aopTech/SpringBoot 2021. 11. 7. 17:04
AOP DI 추가 implementation 'org.springframework.boot:spring-boot-starter-aop' controller @Slf4j @RestController @RequestMapping("/api") public class RestApiController { @GetMapping("/get/{id}") public String get(@PathVariable Long id, @RequestParam String name){ return String.format("%s-%s",id, name); } @PostMapping("/post") public UserDto post(@RequestBody UserDto userDto){ return userDto; } @Dec..
-
spring webflux swagger configTech/SpringBoot 2020. 8. 31. 21:18
- spring boot version org.springframework.boot spring-boot-starter-parent 2.3.3.RELEASE - swagger maven dependency io.springfox springfox-boot-starter 3.0.0 io.springfox springfox-oas 3.0.0 - swagger config @Configuration @EnableOpenApi public class SwaggerConfig { @Bean public Docket apiConfig() { return new Docket(DocumentationType.SWAGGER_2) .groupName("version_1.0") .enable(true) .select() ...
-
Spring Batch (정리)Tech/SpringBoot 2019. 4. 6. 14:25
해당 글은 과 기타 를 참고하여 정리한 내용 입니다. Spring Boot Batch 장점 - 대용량 데이터 처리에 최적화 - 효과적인 통계처리와 같은 재사용 가능한 필수 기능 지원 - 자동화 처리 - 예외사항과 비정상 동작에 대한 방어 기능 Spring Boot Batch 주의 사항 - 복잡한 구조와 로직을 피할것 - 데이터 무결성을 유지하는 유효성 검사 등의 방어책 필요 - 잦은 I/O 사용 최소화를 위한 개발 필요 - Batch 처리시 다른 프로젝트에 영향을 주는지 확인 할것 - Spring boot batch 는 스케줄러를 제공 하지 않음 해결책: Quartz Framework, Jenkins 장점: Quartz 사용시 클러스터링 및 다양한 스케줄링, 실행 이력 관리가능 비추천: 리눅스의 cron..
-
spring boot exception 처리를 위한 enum 클래스 활용Tech/SpringBoot 2018. 9. 15. 13:59
오류 발생시 json 형태의 커스텀한 객체를 던지고 싶다.예외처리시 오류 코드와 오류 메시지는 enum 클래스를 활용한다. 케이스별 예외에 대한 정의를 enum 으로 정의 한다. public enum ServiceError { BIND_ERROR(){ @Override public ResultError getResultError() { String message = getMessage(); return ResultError.builder() .httpStatus(HttpStatus.BAD_REQUEST) .resultCode("40000") .resultMessage(StringUtils.isEmpty(message) ? "Binding Error." : message) .build(); } }, EMA..
-
Spring boot jar 파일 Linux 서버 실행 등록 하기Tech/SpringBoot 2018. 9. 12. 14:00
### Spring boot Linux 서버 실행 등록 하기 * step 01 [maven 수정] ```xml org.springframework.boot spring-boot-maven-plugin true ```` * step 02 [시스템 서비스 등록] sudo vi /etc/systemd/system/서비스명.service ```sql [Unit] Description=설명 추가 After=networking.service [Service] User= ExecStart=/XXX.jar SuccessExitStatus=143 WorkingDirectory= [Install] WantedBy=multi-user.target ``` * step 03 [실행 가능 파일로 변경] chmod +x XXXX...
-
Spring 비동기 사용 방법(Async in Spring boot)Tech/SpringBoot 2018. 5. 18. 14:31
프로퍼티 설정 my.task.core.poolsize=10my.task.capacity=50my.task.max.poolsize=20my.scheduler.poolsize=20 설정 클래스 @Configuration@EnableAsyncpublic class MyBean{ @Bean @ConfitureationProperties(prefix="my.task") public Executor taskExecutor() { ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor(); /* 코드상에 명시적으로 설정 하려면 아래 주석 처리 부분을 사용 */ //taskExecutor.setCorePoolSize(10); //taskExecutor.set..