본문 바로가기

☕️ JAVA23

Spring VS Spring Boot 몇 가지 차이점 Spring Boot로 스프링을 처음 학습하며 Boot의 편리한 기능에 물들어 기존 Spring은 어떻게 구성되고 사용되는지 잘 몰랐습니다. Spring과 Spring Boot의 차이점을 간단히 살펴보려 합니다. (반성을 하며.. 🥹) 자세한 내용은 하단 레퍼런스를 참고해주세요. +a) Spring Boot Starter Spring Boot Starter란 Spring에서 사용하는 라이브러리 간의 의존성과 버전 조합을 확인하여 공개한 의존성 그룹(?)이라고 볼 수 있습니다. Spring Boot는 이를 활용하여 의존성 문제를 해결하고 있습니다. 차이점 설정 파일 관리 Spring 프레임워크의 경우 Dependency를 설정해줄 설정 파일과 버전을 직접 작성해야 합니다. # Spring 프레임워크 Mav.. 2022. 9. 23.
매개변수가 유효한지 검사하기 이 글은 책 이펙티브 자바 3판 Item 49와 하단 Reference 참고했습니다. 잘못된 내용이 있다면 편하게 말씀해주세요 🙏🏻 메서드, 생성자들의 입력값이 특정 조건을 만족하길 바란다. 예를 들어 인덱스 값은 음수 X, 객체 참조는 null이 아니어야 한다. 보통 메서드, 생성자의 몸체가 실행되기 전에 매개 변수 확인한다면 잘못된 값이 넘어왔을 때 즉각적, 깔끔한 방식으로 예외를 던질 수 있다. 어떻게 유효한지 검사해야 할까? public, protected 메서드 보통, 몸체(주요 로직) 실행되기 전 상단에서 매개변수 값 확인 후 예외를 던진다 자바독에 @throws, 예외 경우를 작성한다. public 또는 protected 메서드는 패키지 개발자가 아닌 외부 사용자가 사용한다. 따라서 매개변수.. 2022. 3. 21.
./gradlew bootRun vs java -jar로 실행할 때의 차이점 (리소스 경로) 😰 상황 ./gradlew bootRun으로 스프링 부트 실행할 때 동적 페이지 리소스 경로에 문제가 없었다. 하지만 heroku 배포할 때 ./gradlew bootRun으로 자바 프로젝트가 실행되는 것이 아니라 빌드된 jar 파일을 실행하여 작동한다. 이때 java -jar로 실행할 때 동적 페이지 리소스 경로에 문제가 발생하였다. 🤔 원인 ./gradlew bootRun 실행과 java -jar jarPath로 실행할 때 리소스 위치가 다르다. gradle의 경우 좀 더 유연한 기능을 제공하지만 java -jar 로 실행할 때 문제가 될 수 있다. ✅ 해결 java-spring-cafe 프로젝트 commit 중 : fix 동적 리소스 경로 에러 수정 만약 resource/index.html을 동적 .. 2022. 3. 19.
Spring boot에서 H2 DB 3가지 모드 사용하기(embedded, In-Memory, Server) 환경 : Java 11 + Spring Boot 2.6.2 + Gradle 데이터베이스 : H2 DB H2 DB의 3가지 모드 H2DB는 자바 기반 오픈소스 RDBMS(관계형 데이터 베이스 관리 시스템)이다. H2DB Cheat Sheet를 살펴보면 세 가지 용도로 사용된다. 1. Embedded Mode 2. In-Memory Mode 3. Server Mode Server Mode Server Mode는 공식 사이트에서 H2를 Plafform-Independent 버전을 다운로드하고 h2/bin/h2.sh를 터미널로 실행하면 h2가 TCP 통신을 할 수 있는 서버 버전으로 실행된다고 볼 수 있다. 따라서 외부에서 h2 서버가 실행되어야 스프링에서 application.properties에 h2서버 주.. 2022. 3. 16.
생성자에 매개변수가 많다면 빌더 패턴을 써볼까?! (HTTPClient와 lombok @Builder) 🧰 이 글은 책 이펙티브 자바 3판 Item 2와 하단 Reference 참고했습니다. 잘못된 내용이 있다면 편하게 말씀해주세요 🙏🏻 목차 1. 점층적 생성자 패턴(Telescoping Constructor pattern) 2. 자바빈즈 패턴(JavaBeans pattern) 3. 빌더 패턴(Builder pattern) - 빌더 패턴 사용 예 : java.net +a) lombok의 @Builder를 사용한 빌더 패턴 사용 +a) 다른 언어의 빌더 패턴 한 줄 요약 : 생성자에 매개변수가 많다면 빌더 패턴(Builder pattern)을 써보자. 이전 글 객체 생성할 때 '생성자' 대신 '정적 팩토리 메서드'를 써볼까? 🏭 에서 생성자 대신 정적 팩토리 메서드를 사용하면 좋은 이유를 알아봤다. 그렇다면 생.. 2022. 2. 11.