분류 전체보기
-
Spring Boot 애플리케이션 설정과 DB 설정Spring&SpringBoot 2025. 2. 27. 17:00
개인 공부를 위해 작성된 글입니다.postgreSQL DB를 사용하기 위해 applicaiton.yml 내부 속성(property)을 지정하고 database설정을 하던 중, 두 가지 설정 사이에서 '이걸 설정하면 무슨 일이 일어나는거지?' 혼란스러워 하는 것을 느껴, application설정에 대해 잘 모르고 있다 판단되어 짧게 정리한 글입니다.편의상 속성 파일 포맷을 yml이 아닌 properties로 작성했습니다. Spring Boot 프로젝트를 생성하면, src/main/resources 경로 하위에 application.properties 라는 파일이 생성됩니다. 이 파일은 애플리케이션의 환경 설정을 정의하는 곳으로, 해당 파일을 통해 데이터베이스 연결 정보, 서버 포트, 로깅 수준, 캐시 설정..
-
서비스에서 다른 도메인의 레포지토리를 의존해도 되는가, 그리고 서비스 레이어 간 의존이 가능한가프로젝트 생각 기록 2025. 2. 26. 20:23
상황 : User, Channel, Message, BinaryContent, ReadStatus, UserStatus 도메인을 가진 디스코드를 구현하는 프로젝트를 진행하던 중에 UserService에 UserStatusService, BinaryContentService 의존성을 추가하면서 하게 된 고민을 정리한 글입니다. 지식을 공유하는 글이라기 보단 기록의 성격이 강합니다.프로젝트 환경 : Java, SpringBoot, Gradle CRS 패턴을 적용해 해당 프로젝트를 진행하면서 User, Channel, Message 도메인이 존재할 때까지는 각각의 Service가 해당 도메인의 Repository만을 의존하도록 구성했습니다. 그러나 BinaryContent, ReadStatus, UserSt..
-
데이터 검증(Vallidation)을 어디에서 해야하는가프로젝트 생각 기록 2025. 2. 26. 20:23
상황 : User, Channel, Message 도메인을 가진 디스코드를 구현하는 프로젝트를 진행하던 중에 Message 생성 API에서 Channel 또는 User을 찾을 수 없을 때 404 에러 처리를 해야하는데, 문득 검증 로직은 어느 레이어 수준에서 작성되어야 할까 고민되어 찾아본 자료들입니다.프로젝트 환경 : Java, SpringBoot, Gradle Validation 코드는 어디에 작성해야 할까? - The 3 types of validation logics 파이썬 기반의 설명T.I.L #43 검증 로직 어디에?[Java] 사용자 입력의 검증과 분석은 어떤 계층에서 수행해야 할까 Validation(입력값 검증)의 최적의 장소는 어디일까? Model 객체에서 입력값 검증을 해보자는 의견..
-
도메인 간 책임 분리와 확장성을 고려한 도메인 간의 참조 방향 설계프로젝트 생각 기록 2025. 2. 26. 20:08
상황 : User, Channel, Message 도메인을 가진 디스코드를 구현하는 프로젝트를 진행하던 중에 바이너리 데이터를 저장하고 관리하는 BinaryContent 도메인, 사용자가 특정 채널의 메시지를 어디까지 읽었는지 추적하는 기능을 제공하는 ReadStatus 도메인, 그리고 사용자가 온라인 상태인지를 확인하는 기능을 담당하는 UserStatus 도메인을 추가하면서 하게 된 고민입니다.프로젝트 환경 : Java, SpringBoot, Gradle 당시 바이너리 데이터 기능을 이용하던 곳은 두 곳이었다. 와 메세지의 첨부 파일 >>. 그래서 BinaryContent 엔티티에 User 객체와 Message 객체의 ID 필드를 참조하도록 설계했으며, 유저의 프로필 이미지로 사용되는 경우 Messag..
-
도메인(Domain)과 도메인 모델(Domain Model)소프트웨어 개발 개념 2025. 2. 25. 22:46
도메인, 도메인 모델에 대해서 정리합니다. 이 문서는 수정될 수도 있습니다. 도메인이란 단어의 혼용도메인이란 단어를 모호하게 생각해 도메인과 연관된 단어는 죄다 "도메인"이라고 불렀던 것 같습니다. 특히 도메인 설계 단계에서 해결하고자 하는 기능을 정리하고 있노라면 '그래서... 도메인이란 게 정확히 뭐지?'라는 생각도 들었고요. 이렇게 부르는 것이 저뿐만 아니라 다른 사람들에게도 혼돈을 줄 수 있겠다, 싶어 짜투리 시간을 내 정리하고 있습니다. 1. 도메인(Domain)소프트웨어 개발에서 도메인은 해결하려는 문제의 영역을 의미합니다.더보기또 이때 해결이라는 워딩을 쓰는 이유는 소프트웨어의 역할에 이유가 있습니다.소프트웨어가 기존에 불편하거나 비효율적인 문제를 개선하거나 없애는 역할을 했기 때문입니다..
-
SOAP와 REST 차이점과 REST로의 전환 이유웹 개발 2025. 2. 25. 09:18
사전 지식 : 웹 API, https://j00d.tistory.com/37 웹 API인 SOAP와 REST의 차이점을 표로 정리하고 SOAP에서 REST로 전환한 이유에 대해 작성한 짧은 글입니다. SOAP와 REST 차이점 특징 SOAPREST프로토콜HTTP, SMTP, JMS, FTP 등 여러 프로토콜주로 HTTP*메시지 포맷XMLJSON, XML 등 다양한 포맷 가능구조복잡한 XML 기반, 엄격한 규격단순하고 직관적, 규격이 자유로움상호운용성다양한 시스템 간의 호환성 제공HTTP 기반이라 웹 시스템 간에 매우 적합캐싱 지원기본적으로 지원하지 않음HTTP의 캐싱 기능을 활용 가능보안WS-Security 등의 복잡한 보안 지원HTTP 자체의 보안(SSL/TLS)을 사용상태상태 유지(세션 기반)상태 비..
-
Spring MVC @Controller와 @RestController의 차이점Spring&SpringBoot 2025. 2. 17. 09:22
먼저 MVC 패턴에 대해 설명하고, Spring에서 MVC 패턴을 구현하기 위해 만든 모듈인 Spring-webMVC을 간단히 소개합니다. 그 후 클라이언트의 요청 처리 흐름을 설명하며, @Controller와 @RestController의 차이점을 중심으로 각각의 처리 과정을 보여주는 문서입니다. 1. MVC 패턴MVC(Model-View-Controller) 패턴은 웹 애플리케이션을 설계할 때 가장 널리 사용되는 패턴 중 하나입니다. 데이터 및 비즈니스 로직을 관리하는 Model, 사용자에게 데이터를 보여주는 쪽인 View, Model과 View의 사이에서 요청을 받고 응답하며 두 레이어 사이를 연결하며 흐름을 제어하는 Controller가 있습니다. MVC 패턴은 관심사의 분리 지향하여 나온 패턴입..
-
Spring에서 AOP(Aspect Oriented Programming)가 필요한 이유Spring&SpringBoot 2025. 2. 17. 09:21
이 문서에서는 Spring 에서 AOP(Aspect Oriented Programming)가 필요한 이유를 서술하기 이전, Spring의 주요 개념과 이점을 설명합니다. 그 끝에 Spring에서 AOP라는 패러다임이 필요한 이유를 말하고, Spring Boot에서 Spring AOP 모듈을 이용한 사례를 보이며 이유를 구체화시킵니다.글이 많은 문서임을 미리 알립니다! 1. Spring의 주요 개념Spring의 주요 개념에는 Bean, IoC, DI, AOP 가 있습니다. Bean은 IoC(Inversion of Controller) 디자인 원칙에 의거한 Spring이 관리하는 객체입니다. 좀 더 섬세히는, Spring IoC 컨테이너가 관리하는 POJO(Plain Old Java Object)입니다...