본문 바로가기

Backend/Spring

(39)
Spring Boot Logging 간단 설정 (application.yml) 아주 간단한 로깅 남기는 법이에요. 어느정도 규모가 작은 서비스는 application.yml 설정만으로도 커버할 수 있어요. 규모가 점점 커지면 logback.xml 파일로 세부적으로 설정해서 관리할 필요가 있어요. application.yml logging: file: path: /Users/hong/Logs/kotlin-spring max-size: 500MB max-history: 10 level: root: info me.hong.kotlinspring: debug 주의할 점은 logging.file.name 을 설정하면 프로젝트 루트 경로에 파일이 생기고 logging.file.path는 먹지 않아요. 이유는 자세히는 안 찾아봤어요.. 버그인지 의도한건지.. logging.file.max-si..
JPA enum으로 컬럼 관리 DB에 특정 데이터만 들어가야 하는 경우가 있어요. 성별: 남자/여자 삭제플래그: YES/NO 상태값: 준비/진행/완료 등등 비즈니스에 따라 여러가지 경우가 있는데요. 데이터를 관리하기 용이하도록 enum을 활용해볼게요. 예시는 쉽게 남자/여자 데이터로 해볼게요. 우선 enum 클래스를 하나 만들어주세요. description 필드는 굳이 안넣어도 됩니다. Gender.java (enum) @Getter @AllArgsConstructor public enum Gender { MALE("남자"), FEMALE("여자"); private String description; } User.java (Entity) @Entity @Getter @Setter public class User { @Id @Gener..
Spring Boot 백그라운드 jar 중지 (kill pid) 백그라운드로 실행 중인 jar 프로세스를 종료할 때 직접 PID를 찾아서 kill합니다. ps -ef | grep jar kill 15235 관리가 용이하도록 애플리케이션을 시작할 때 pid 파일을 생성하고, 중지할 때는 pid 파일을 참고하도록 작업해볼게요. application.yml spring: pid: file: boot.pid Application.java @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication application = new SpringApplication(DemoApplication.class); application.addLis..
Gradle 버전 관리 (Feat. sdkman) 여러 프로젝트 코드를 동시에 다루는 경우가 종종있죠. Gradle 버전이 다를 경우 귀찮은 일이 발생할 수 있습니다. sdkman 을 이용하여 gradle 버전을 관리하는 방법을 소개할게요. sdkman 설치 bash를 이용하는 경우 curl -s "https://get.sdkman.io" | bash or 전 zsh를 사용하여 아래와 같이 입력하였습니다. curl -s "https://get.sdkman.io" | zsh Gradle 설치 최신 버전 sdk install gradle 특정 버전 sdk install gradle 5.6.4 Gradle 버전 변경 sdk use gradle 5.6.4 마지막으로 잘 적용되었는지 gradle 버전을 확인해볼게요. gradle -v 잘됬네요.
Gradle Build Skip Test (테스트 없이 빌드) Gradle Project에서 빌드할 때 테스트를 하지 않고 싶은 경우가 있어요. 5 버전 기준이에요. gradle build --exclude-task test 또는 build.gradle 에 아래와 같은 패턴으로 test 시에 패키지들을 제외시킬 수도 있어요. test { exclude '**/*' } test { exclude 'com/example/demo**' }
Spring Boot Banner.txt (프로젝트 타이틀 콘솔 출력) Spring Boot 프로젝트를 생성하고 실행하면 아래 사진과 같은 배너를 확인할 수 있어요. 이 배너를 바꿔보려고 해요. src/main/resources 경로에 banner.txt 파일을 생성해주고 내용을 입력해주세요. banner.txt 아래 내용을 그대로 복사하여 banner.txt에 붙여넣어보세요. ,--. ,--. ,--. ,--. ,--. ,--. ,--. ,--. | '--' | ,---. | | | | ,---. | | | | ,---. ,--.--. | | ,-| | | .--. | | .-. : | | | | | .-. | | |.'.| | | .-. | | .--' | | ' .-. | | | | | \ --. | | | | ' '-' ' | ,'. | ' '-' ' | | | | ..
No identifier specified for entity (JPA) 스프링 부트(Spring Boot) 애플리케이션을 실행했는데 오류가 났어요. org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: No identifier specified for entity: com.exa..
MyBatis vs JPA 차이, 사용후기, 장단점 MyBatis SQL 중심 개발 장점 겁내 쉬워요. SQL의 강점과 특징을 그대로 쉽게 활용할 수 있음 어떤 시스템이든 무난하게 평균 효율을 낼 수 있음 단점 SQL을 직접 작성하여 반복되는 작업이 존재 SQL로 모든 문제의 해결을 쉽게 할 수 있어서 테이블 설계에 소홀해지는 경우가 많음 JPA Object 중심 개발 장점 DBMS 벤더에 종속되지 않도록 개발 가능 기본적인 CRUD 쿼리를 반복적으로 작성하지 않아도 됨 수정사항이 발생하였을 때 수정해야 할 코드가 적음 빌드 과정에서 오류 발생 Type-Safe 단점 겁내 어려워요. 복잡한 쿼리를 사용해야 할 때에 불리, 복잡한 쿼리를 지양하며 꼭 필요한 경우 Querydsl이나 jOOQ와 같은 라이브러리 사용을 권장 JPA 사용하면 불리한 경우 이미 설..