1. 운영 서버와 테스트 서버의 DB 설정을 나누고 싶을 때
(1) 먼저 application.yml 에서 개발/운영 환경에 따라 DB 설정을 나눠준다.
https://1minute-before6pm.tistory.com/12
(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
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 |