cloud:
  aws:
    credentials:
      access-key: ${S3_ACCESS}
      secret-key: ${S3_SECRET}
    region:
      static: ap-northeast-2
    s3:
      bucket: auctify
    stack:
      auto: false

프로젝트를 하다보면 중요한 DB정보나 AWS관련 정보를 사용하는 경우가 있다. 이때 따로 yml파일에 민감한 정보를 환경변수에서 가져와

사용할 수 있다. 오늘 이 방법에 대해서 간략하게 정리하고자 한다.

 

 

 

스프링 버전에 맞는 dotenv의존성을 가져와야한다. 

build.gradle

.env파일을 그냥 읽어 들을 수 없으므로 dotenv의존성 추가 버전에 유의할 것 

// .env파일 로드
implementation 'me.paulschwarz:spring-dotenv:4.0.0'

 

 

.env파일 작성 

이때 .env파일은 gitignore에 설정되어 있어야함. (참고로 설정하고 캐시를 제거해서 바로 적용되도록 하자.)

key=value 형식으로 작성 

rds_mysql_secret=
rds_mysql_name=
rds_mysql_url=
jwt_secret=vmf
google_client=
google_secret=
google_uri=
naver_client=
naver_secret=
s3_access=
s3_secret=
s3_bucket=
AWS_ACCESS_KEY_ID=7+Z
AWS_SECRET_ACCESS_KEY=AKIAYQYUA
S3_ACCESS=7+Zi1XOOICyU7jjY6S7
S3_SECRET=ㅁㄴㅇㅁㄴ123

 

 

application.yml에서 가져다 쓰기

아래는 간단한 예시다  ${key값}

cloud:
  aws:
    credentials:
      access-key: ${S3_ACCESS}
      secret-key: ${S3_SECRET}
    region:
      static: ap-northeast-2
    s3:
      bucket: auctify
    stack:
      auto: false

 

 

정리 

원격에 올리기 싫은 환경변수들을 안전하게 .env에 저장하는 법에 대해서 알아봤다. 

'SPRING' 카테고리의 다른 글

Controller에서 JSON데이터와 MultipartFile받기  (0) 2025.02.01

JSON으로 클라이언트에게 데이터를 받으면서, 파일 데이터를 받을 경우가 있을 것이다.

어떻게 처리할까?

  • @ModelAttribute: 폼 필드와 URL 파라미터를 처리하는 데 적합하지만, JSON과 Multipart 데이터를 동시에 처리하는 데는 적합하지 않습니다.
  • @RequestBody: 본문 전체를 단일 형식(JSON, XML)으로 처리하는 데 적합하지만, Multipart 데이터를 처리할 수 없습니다.
  • @RequestPart: RequestPart는 Multipart 요청에서 특정 파트를 명시적으로 받아들일 수 있습니다.
    즉, 각각의 파트를 개별적으로 처리할 수 있으며, JSON과 파일을 동시에 처리하는 데 적합합니다.@RequestPart는 Multipart 요청에서 JSON 데이터와 파일을 함께 처리할 수 있는 적합한 방식입니다.
    @PostMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    // BindingResult 타입의 매개변수를 지정하면 BindingResult 매개 변수가 입력값 검증 예외를 처리한다.
    public ResponseEntity<?> makeMeet(
                                      @Valid @RequestPart("meet") RequestMeetDTO meet,
                                      @RequestPart(value = "images", required = false) List<MultipartFile> images,
                                      BindingResult bindingResult,
                                      @AuthenticationPrincipal UserDetails userDetails) {


                '''' 로직 처리'''  ;; 


                                return 결과; 
        }
    }

결론 여러 타입을 받을 때 @ReuqestPart를 사용하자!

@ReuqestPart옵션

@RequestPart의 주요 옵션 및 속성

value

설명: RequestPart로 받을 요청 파트의 이름을 지정합니다. 클라이언트가 multipart/form-data로 보낼 때, 각 파트는 이름을 가지고 있으며, 이 이름을 지정하여 해당 파트를 컨트롤러 메서드에서 처리합니다.

예시:

@RequestPart("profileImage") MultipartFile image

위 코드에서 클라이언트는 profileImage라는 이름으로 파일을 업로드해야 하고, 이 파일은 MultipartFile 타입으로 받아집니다.

required

설명: 해당 파라미터가 필수인지 여부를 설정합니다. 기본값은 true이며, 클라이언트가 해당 파트를 제공하지 않으면 예외가 발생합니다. 만약 해당 파트를 선택적으로 처리하려면 required = false로 설정할 수 있습니다.

@RequestPart(value = "profileImage", required = false) MultipartFile image

위 설정에서는 profileImage 파트가 없어도 오류가 발생하지 않습니다. 클라이언트가 파일을 제공하지 않으면 image는 null로 처리됩니다.

contentType

설명: 처리할 파트의 MIME 타입을 지정합니다. 특정 MIME 타입만 처리하도록 제한할 수 있습니다.

@RequestPart(value = "profileImage", contentType = "image/jpeg") MultipartFile image

위 코드에서는 profileImage가 image/jpeg 형식의 파일만 받을 수 있도록 설정됩니다.

'SPRING' 카테고리의 다른 글

환경변수 .env파일  (0) 2025.02.26

+ Recent posts