simDev1234
심플하고 차분하게
simDev1234
전체 방문자
오늘
어제
  • 분류 전체보기
    • Computer Science
      • Basic Math
      • Data Structure
      • Algorithm
      • Database
      • OS
    • Language
      • Java
      • Kotlin
      • SQL
    • Framework
      • Spring
      • Orm&Mapper
      • 프로젝트로 스프링 이해하기
      • 스프링 라이브러리
    • Infra
      • Cloud
      • Docker
      • Redis
      • AWS, Azure
      • Device
    • Etc
      • CleanCoding
    • Git,Github

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • JVM메모리구조
  • scanner #next() #nextLine()
  • 자바프로그램
  • 참조변수
  • 자바메모리구조
  • 참조타입
  • 자바
  • 컨트롤러
  • 스프링
  • 자바프로그래밍
  • controllerTest
  • 404
  • null

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
simDev1234

심플하고 차분하게

[스프링] Build.Gradle & application.yml 관련 메모
Framework/Spring

[스프링] Build.Gradle & application.yml 관련 메모

2022. 10. 28. 14:31

1. 운영 서버와 테스트 서버의 DB 설정을 나누고 싶을 때

(1) 먼저 application.yml 에서 개발/운영 환경에 따라 DB 설정을 나눠준다.

https://1minute-before6pm.tistory.com/12

https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-Config-Data-Migration-Guide#profile-groups

(2) 그리고 나서 아래와 같이 Edit Configuraton의 Active prifiles를 설정한 profile 이름으로 바꾼다.

ㄴ [추가] Build.Gradle 의존성에 대한 이해

- 너무나 복잡하게 profile을 쓰고 db를 application.yml에서 나눴는데, 그럴 필요가 없단 걸 알게 됐다.

- 그냥 아래처럼 나누면 되었었다.

- implementation : 정말 라이브러리만 추가한 것을 말한다.

- runtimeOnly : 추가할 라이브러리는 런타임 시에 반드시 필요한 라이브러리임

- compileOnly : 추가할 라이브러리는 런타임 시에 반드시 필요하진 않음

* application.yml로 datasource를 통해 tomcat 또는 spring 실행 시에 사용할 db를 연결하는 것과는 다른 맥락

 

https://toss.tech/article/how-to-manage-test-dependency-in-gradle

 

테스트 의존성 관리로 높은 품질의 테스트 코드 유지하기

혹시 테스트 코드에서도 의존성을 관리해본 적이 있으실까요? 해당 포스트에서는 Gradle의 java-test-fixtures 플러그인을 사용하여 테스트 의존성 관리를 통해 높은 품질의 테스트 코드를 유지하는

toss.tech

 

 

2. 서버 메타데이터를 클래스로 뽑아서 관리하고 싶을 때

- 인증 메일을 보낼 때, 서버의 주소가 필요한데 그걸 매번 쳐주지 않고 주입시켜주려고 했다.

- application.yml에서 메타정보를 입력해서 가져올 수도 있는데, 더 우아한 방식이 있다고 해서 써봤다.

- 방법은 아래와 같이 서버를 클래스로 따로 설정해주는 것이다.

https://www.baeldung.com/spring-boot-configuration-metadata

/* 이메일 인증 시 서버 주소 필요하여 별도로 서버 설정 */
/* rf. https://www.baeldung.com/spring-boot-configuration-metadata */
@Configuration
@ConfigurationProperties(prefix = "server")
@Getter
@Setter
public class ServerPropertyConfig {

  private String name;

  private String ip = "127.0.0.1";

  private int port = 8080;

  private String address = String.format("http://%s:%d", ip, port);

}

 

3. Form 데이터를 Put/Delete로 전송할 때 Get으로 자동 변환 막기

- 이건.. 음 정확한 정보를 더 찾아봐야할 것 같다.

- 일단 알게 된 사항은 아래와 같이 hiddenmethod를 설정하면, 

  <input type = hidden> 을 통해 전달 받은 데이터를 PUT/DELETE로 처리할 수 있다는 것 정도이다. 

mvc:
  hiddenmethod:
    filter:
      enabled: true

 

4. H2 DB의 오류

[ 상황 ]

- ddl.sql과 schema.sql이 안 먹히고 datasource관련 exception이 터짐

[ 원인 ]

- 아래와 같이 schema.sql에 user를 적어두었었는데,

- H2 db의 경우 user는 내장된 예약어인지 어쩐지 어쨌든 사용하지 못하게 되어 있다고 한다.

drop table if exists user -- error

[ 해결 방법 ]

- cascade를 붙여서 작성한다.

drop table if exists "user" cascade

create table "user"
(

)

[ 그러나... ]

- 이 방법을 하게 되면 1.에서 development와 production에 따라 db vendor를 다르게 설정한게 의미가 없어진다.

- 왜냐고? production에서 나는 mysql를 쓸 건데, mysql은 또 "user"를 인식못한다. (이런..으귬느앎ㄴ;ㅣ러ㅏㅐㅂ쟛)

- 그래서 심플하게 개발단/운영단 나누어 작업하는 건 차후에 하기로 하고, 

  욕심부리지 않고 mysql만 사용하기로 했다. H2 진짜 어우 계속 화나게 하넴 ㅋㅋ 

 

 

'Framework > Spring' 카테고리의 다른 글

[Spring Cloud & MSA] Spring Cloud Netflix Eureka  (0) 2024.01.10
[Spring Cloud & MSA] MSA와 Spring Cloud  (1) 2024.01.09
[스프링] @AutoWired 동작 원리 및 DI injection 관련 설명 모음  (0) 2022.10.20
[HTTP] @RequestParam vs @RequestBody  (0) 2022.10.19
[HTTP] User IP와 Agent(Device) 정보 가져오기  (0) 2022.10.15
    'Framework/Spring' 카테고리의 다른 글
    • [Spring Cloud & MSA] Spring Cloud Netflix Eureka
    • [Spring Cloud & MSA] MSA와 Spring Cloud
    • [스프링] @AutoWired 동작 원리 및 DI injection 관련 설명 모음
    • [HTTP] @RequestParam vs @RequestBody
    simDev1234
    simDev1234
    TIL용 블로그. * 저작권 이슈가 있는 부분이 있다면 댓글 부탁드립니다.

    티스토리툴바