1. Docker Compose 로 Redis 실행하기1-1. 환경 구성하기docker-compose.ymlversion: "3.9"services: redis: image: redis:latest container_name: ${REDIS_NAME} ports: - ${REDIS_PORT}:6379 healthcheck: test: [ "CMD", "redis-cli", "ping" ] interval: 5s retries: 10 volumes: - redis-vl:/var/lib/redisvolumes: redis-vl: driver: local ${변수} 부분은 환경 변수입니다.노출되면 안 되는 중요 정보들 또는 자주 ..
프레임워크/Spring Boot
문제 상황서버를 분리하게 되면서 DB도 함께 분리하게 되었다.이에 따라 각각의 멀티 모듈에 .env가 생겼고 이걸 적용시키고 싶었다..├── auth-server│ └── ...├── core│ └── ...├── resource-server│ ├── build.gradle│ ├── docker-compose.resource.yml│ ├── .env # 이 파일이 제대로 로드되지 않음│ └── src│ └── main│ └── resources│ └── application.yml└── settings.gradle 각 모듈의 application.yml 파일은 .env 파일에 정의된 환경 변수를 사용하여 설정을 구성하고 있었다...
DB를 연동하기 위해서 DB 접속 정보를 application 설정 파일에 명시해주어야 한다.그러나 이런 DB 접속 정보는 유출되면 위험한 굉장히 민감한 정보이므로,실수로라도 git에 올라가지 않도록 숨기는 작업을 해야한다. 1️⃣ application-db 설정 파일 생성하기 application-db 이라는 파일을 생성하고, 확장자는 properties 이나 yml 중 선택한다. 아래의 비교글을 보고 원하는 확장자로 만든다.https://yeonyeon.tistory.com/245 .properties vs .yml🤔 서론 나는 설정 파일을 application.properties만 써봤다. 필요하다면 application-prod.properties나 application-dev.propert..
Spring Boot 프로젝트를 처음 시작할 때 진행하는 단계를 정리해보았다.Spring Boot 프로젝트 생성 -> DB 연결 -> Git repository 연결 순으로 진행한다. IntelliJ, Java, MySQL는 설치되어 있다는 가정 하에 포스팅한다.🍃 Spring Boot 프로젝트 생성 spring initializr 스프링부트를 기반으로 프로젝트를 생성해주는 사이트로 프로젝트를 다운하여 쉽게 사용이 가능하도록 만든 사이트이다.위와 같이 프로젝트의 버전, 라이브러리, 언어 등을 선택하여 간편하게 생성할 수 있다.https://start.spring.io/ Project : Spring Boot를 빌드하고 배포하는 방식Maven, Gradle 2가지 중에 선택하면 된다. 스크립트 가독성이..
문제 상황- user-service 모듈에서 User Repository 이외에 투자 성향 테스트 도메인 investment_test 을 생성 - investment_test 도메인 내부에 또다른 Repository(Question, Answer) 를 구성했던 상황`user-service` 어플리케이션은 정상적으로 실행이 되는데 `portfolio-service` 어플리케이션을 실행하면 아래와 같이 에러가 발생하였다. 에러 메세지2024-06-18T23:59:52.274+09:00 WARN 6146 --- [portfolio-service] [ main] ConfigServletWebServerApplicationContext : Exception encountered during c..
1. ExceptionHandlerExceptionResolver예외가 나면 자동으로 호출되어 예외를 처리할 수 있다. // 유효성 검사하다가 에러가 터지면 호출되는 예외 처리 메서드 @ExceptionHandler//(MethodArgumentNotValidException.class) public ApiUtils.ApiResult> handleValidationExceptions(MethodArgumentNotValidException errors) { Map errorMessages = new HashMap(); for (FieldError error : errors.getFieldErrors()) { String errorField = ..
스프링부트가 제공하는 어노테이션을 사용하면 쉽게 데이터에 대한 유효성 검사를 할 수 있다.유효성 검사?FE에서 입력받은 값이 있는지(null)형식(이메일, … 등 )에 맞는지숫자를 받아야 하는데 문자를 주진 않았는지라이브러리 추가build.gradle의 dependencies에 아래와 같이 추가해준다.dependencies { implementation 'org.springframework.boot:spring-boot-starter-validation'}제약조건 종류null 체크 @NotNull : 해당 필드에 null값을 불허한다.@NotEmpty : 해당 필드에 null, ""을 불허한다.@NotBlank : 해당 필드에 null, "", " " 을 불허한다. 즉 최소 1글자 @NotBl..
DO(Entity)? DTO?Domain Object (= Entity)= DB 데이터 원본setter를 가질 수 없는 것은 아니다.수정 용도 등 꼭 필요로 하는 setter는 가질 수 있다.ex. set *** , update **** (매개변수 1~2개 +@)DTO(Data Transfer Object)= Domain Object 사본 추가 필드 혹은 제외 필드를 가질 수 있다.계산된 데이터를 가질 수 있어야 한다.데이터 변환도 일어날 수 있다. setter를 가질 수 있다. FE ~ DB 로 데이터 전송 과정 중 DTO DO 변환 위치 * 개인의 주관적인 생각입니다. 다르게 생각하시는 분은 댓글 남겨주시면 감사하겠습니다 :) Service 로직에서 변환해야한다고 생각한다.그 이유는 아래와 같..
문제 상황ResponseEntity가 아닌 제네릭을 이용한 공통 리스폰스 객체를 만들어 보내려 하였다. 전체 코드 더보기더보기 @PostMapping("/join") public ApiResult join(@RequestBody Member member) throws DuplicateException { log.info(member.toString()); try { if (isDuplicateId(member)) { throw new DuplicateException("중복된 ID 입니다."); } } catch (DuplicateException e) { return ..
Jackson 라이브러리 [Spring] Jackson 라이브러리 이해하기.안녕하세요. 오늘은 Spring 프레임워크에 빼놓을 수 없는 라이브러리중 하나인 Jackson에 대해 간단하게 포스팅 합니다.주의!! 해당 포스팅은 Jackson의 라이브러리 2.9.7 버전을 다룹니다.또한, 프로젝mommoo.tistory.comJackson 라이브러리의 필요성API 통신을 하다 보면 대부분 JSON 형태로 데이터를 주고받는다.이때, FE와 BE가 서로 파라미터 작성 방식(카멜케이스, 스네이크케이스) 또는 파라미터 명이 다를 경우 데이터가 원활하게 파싱이 안될 수 있다.더보기카멜 케이스(CamelCase) vs 스네이크 케이스(snake_case)카멜 케이스(Camel Case)첫 글자는 소문자로, 중간 글자들..