웹 개발/🍃 SpringBoot

웹 개발/🍃 SpringBoot

배포시 spring-boot-devtools 비활성화

build.gradleplugins { id 'java' id 'org.springframework.boot' version '3.4.3' id 'io.spring.dependency-management' version '1.1.7'}group = 'com.yurapp'version = '0.0.1-SNAPSHOT'java { toolchain { languageVersion = JavaLanguageVersion.of(17) }}configurations { compileOnly { extendsFrom annotationProcessor }}repositories { mavenCentral()}dependencies { // S..

웹 개발/🍃 SpringBoot

Spring Boot | 패키지 구조(계층형 vs 도메인형)

🤔 계층형? 도메인형? 어떤 구조가 더 좋을까요?규모 있는 프로젝트를 진행하다 보면 하나의 문제에 자주 부딪히게 됩니다. 바로 내가 맡은 기능의 코드를 찾기 어려워진다는 점입니다. 수많은 Service 중에서 UserService를 찾고, Domain 패키지 안에서 User 클래스를 다시 찾는 과정은 꽤 번거롭습니다.이러한 불편함은 대부분 계층형 구조만 사용하는 데서 비롯된 문제입니다.프로젝트의 디렉터리 구조는 개발 생산성과 유지보수성에 큰 영향을 미칩니다.일반적으로 많이 사용되는 구조는 크게 두 가지로 나뉘는데, 바로 계층형 구조(Layered Architecture)와 도메인형 구조(Domain-Driven Design, DDD)입니다.🗂️ 계층형 구조 (Layered Architecture)계층..

웹 개발/🍃 SpringBoot

findAll()에서 Optional<List<T>>를 쓰지 않아도 되는 이유

🔍 findAll()에서 Optional>를 쓰지 않아도 되는 이유Spring 또는 MyBatis 기반 프로젝트를 개발하다 보면 Repository에서 데이터를 조회할 때 어떤 반환 타입을 써야 할지 고민할 수 있습니다. 특히, Optional>를 사용할까? List로 충분할까? 하는 문제는 많은 개발자들이 한 번쯤 마주하는 주제입니다.이번 글에서는 왜 findAll() 같은 목록 조회 메서드에서는 Optional>를 굳이 쓰지 않아도 되는지를 설명해 보겠습니다.✅ 단일 조회와 다중 조회의 차이 목적메서드 예시변환타입단일 조회findById(Long id)Optional다중 조회findAll()List 단일 조회에서는 해당 ID에 해당하는 데이터가 존재하지 않을 수 있기 때문에, Optional를 사용..

웹 개발/🍃 SpringBoot

SpringSecurity + JWT 에서 nginx health-check 요구시 문제

문제Nginx에서 8080포트로8081서버와 8082 서버를 연결해주고있는상황curl localhost:8082/api/health-check위 명령어를 입력했을때security config에서 아래와같이 추가했기떄문에 // white list (Spring Security 체크 제외 목록) MvcRequestMatcher[] permitAllWhiteList = { mvc.pattern("/api/health-check") }; 아래와같이  인증없이 UP 뜨는 게 정상curl localhost:8082/api/health-check{"status":"UP"} 근데 똑같이 nginx 연결포트인 8080으로 했을땐 인증요구하는 문제발생curl..

웹 개발/🍃 SpringBoot

Springboot | 생성자관련 어노테이션

생성자관련 어노테이션@NoArgsConstructor:생성자에 아무런 매개변수도 없는 기본 생성자를 생성합니다.주로 프레임워크(예: JPA)가 기본 생성자를 필요로 할 때 사용됩니다.@AllArgsConstructor:클래스의 모든 필드를 매개변수로 받는 생성자를 생성합니다.모든 필드를 한 번에 초기화할 수 있으며, 불필요한 필드까지 포함됩니다.@RequiredArgsConstructor:final 필드와 @NonNull로 표시된 필드(초기값이 없는 경우)만 매개변수로 받는 생성자를 생성합니다.주로 의존성 주입(특히 생성자 주입) 시, 필요한 필드만 초기화하기 위해 사용합니다.1. @NoArgsConstructor 예시파라미터 없는 기본 생성자를 생성합니다.import lombok.NoArgsConstr..

웹 개발/🍃 SpringBoot

SpringBoot + MyBatis + Postgres 완전정복

SpringBoot에 MyBatis 설정법1. 작업환경IDE : IntelliJ 2024.3.1Language : JavaType : Gradle -GoovyJDK : jbr-17Java : 17Package : Jar Spring Boot : 3.4.3dependency :dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.4' compileOnly 'org.projectlombok:lombok' developmentOnly 'org.springframework...

이재원
'웹 개발/🍃 SpringBoot' 카테고리의 글 목록