- Gradle jdbc mysql 연동 이슈
build.gradle 에서 아래처럼 디펜던시를 추가해주고
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
runtimeOnly 'mysql:mysql-connector-java'
}
application.yml 파일에서 아래처럼 설정을 하는데
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
Spring에서 DB Driver를 계속 인식을 못해주는 에러가 생겼다.
그래서 External Libraries에 mysql 이 잘 설치되었는지 확인해보니 mysql 관련 connector가 설치되어 있지 않았다. 분명 dependencies에서 mysql를 설정을 해주었는데도 설치가 계속 안되서 구글을 찾아보다가 특정 버전을 기입해서 해보라는 얘기가 있어서
runtimeOnly 'mysql:mysql-connector-java:8.0.28'
이렇게 바꿔서 다시 리빌드 해보니 이제는 설치가 잘된걸 확인할 수 있었다.
이유는 왜그런지 아직까지 의문이지만 역시 구글이 개발의 반절이상이라는 걸 다시금 깨닫고 프로젝트를 다시 진행했다..
- Swagger , spring boot 버전 호환 오류
프로젝트 API document를 만들려고 swagger 디펜던시를 추가하고 , yml파일에서도 관련 설정을 추가해주고, SwaggerConfig Configuration까지 작성해주었다.
implementation 'io.springfox:springfox-boot-starter:3.0.0'
implementation 'io.springfox:springfox-swagger-ui:3.0.0'
spring:
mvc:
pathmatch:
matching-strategy: ant_path_matcher
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build().apiInfo(apiInfo());
}
private ApiInfo apiInfo() {
String description = "Welcome Log Company";
return new ApiInfoBuilder()
.title("SWAGGER TEST")
.description(description)
.version("1.0")
.build();
}
}
그런데 http://localhost:8080/swagger-ui/index.html 에 접속해보니 계속 404에러가 떴다.
이번에도 구글링을 열심히 해보니 SwaggerConfig에서 추가 설정을 해보라는 코드도 있었고, Spring boot 버전을 낮추라는 얘기도 있었다.
우선 버전을 낮추는 방법은 가장 마지막에 해봐야할 것 같아서 여러가지 추가 설정코드를 넣어서 해봤지만 404에러가 계속 발생하였다 ..
swagger가 spring boot의 특정버전이후부터 에러가 많다는 얘기들이 있어서
swagger 하나때문에 spring boot의 버전을 바꾸는 게 말이되나 싶었지만
이번 토이프로젝트에서 처음으로 swagger를 이용한 API docs만들기를 해보려고 했기에 spring boot 버전을 2.6.6 으로 낮추고 다시 해보았더니 정상적으로 접속이 되었다.