@CrossOrigin
애너테이션을 이용해 컨트롤러 혹은 메서드에서 CORS 정책을 설정.war
파일을 이 곳에 이동시키거나, 설정파일에서 경로를 변경하여 실행할 수 있다.{username}@{root} bin % ./startup.sh # 톰캣 실행
{username}@{root} bin % ./shutdown.sh # 톰캣 종료
JAR → WAR 포맷 변경
build.gradle → plugins에 id 'war'
추가
{project}Application
파일 수정
@SpringBootApplication
public class sampleApplication extends SpringBootServletInitializer { // (1)
public static void main(String[] args) {
SpringApplication.run(sampleApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { // (2)
return builder.sources(sampleApplication.class);
}
}
프로젝트 빌드
./gradlew build
명령어를 이용해 프로젝트 빌드.war
파일을 톰캣의 webapps 디렉토리 하단으로 이동.war
파일의 이름이 ROOT인 경우 별도의 변경 없이 실행가능하지만, 다른 이름인 경우 conf > server.xml
파일에서 추가 설정을 진행ngrok http {port}
→ 원하는 포트를 연결하여 실행💡 Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "\000a alter table to_do \000a add constraint UK_g4hrfmujgwec0rfkt7ktpdw3h unique ([*]order)"; expected "identifier"; SQL statement:
→@Column(name = "TODO_ORDER")
추가하여 해결
💡 javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'javax.validation.constraints.NotBlank' validating type 'java.lang.Boolean'.
→Boolean 타입이므로 @NotBlank가 아닌 @NotNull로 바꿔주었다.
- @NotNull @NotEmpty @NotBlank 차이
@NotNull
모든 타입에 대해 null을 허용하지 않는다.@NotEmpty
- CharSequence (length of character sequence is evaluated)
- Collection (collection size is evaluated)
- Map (map size is evaluated)
- Array (array length is evaluated)
위의 나열된 타입에 대해 null, 빈 값을 허용하지 않는다.@NotBlank
CharSequence 타입에 대해 null을 허용하지 않고, 최소 한 개 이상의 공백 문자가 아닌 문자를 포함해야 한다. (String은 CharSequence 구현체이므로 해당된다.)