WEB/Kotlien

SpringBoot - kotlin 프로젝트 세팅하기

코틀린 공부를 시작하려고 SpringBoot - kotlin 프로젝트를 세팅 하는 과정입니다

공식문서 참고 하시면 도움이 될것 같습니다

https://spring.io/guides/tutorials/spring-boot-kotlin/

 

1. 프로젝트 생성

회사에서 Maven 을 사용하고 있기 때문에 Gradle-Kotiln 으로 프로젝트 생성했다.

위와 같이 세팅하는데 스프링부트 버전이 마음에 걸렸다. 인텔리제이에서 사용가능한 버전으로 자동 세팅해준것 같지만 의심스러운 마음에 

공식홈페이지에 들어가 확인했다.

https://spring.io/projects/spring-boot#support

 

아래로 스크롤을 내리면 색깔의 의미를 확인할 수 있다.

우선 특별히 어떤 플러그인을 사용할지 생각해둔게 없기 때문에 프로젝트 생성시 설정되어있는 3.0.4 로 프로젝트를 세팅한다. 

 

Incompatible because this component declares an API of a component compatible with Java 17 and the consumer needed a runtime of a component compatible with Java 11

여기서.. 문제가 생긴다 Gradle Build 오류가 난다 ... Srping 3.x 버전부터는 Java 17 이상 버전이 필수이다. 오류가 난 후에 알게 되었다... (이 부분 유효성 검사는 왜 안해주시죠 ,, ?) Java 11을 사용하고 있어서 19로 재설정하였다.

 

19 ..?

그래도 안되면 아래 링크를 클릭하여 이것저것 해보면된다.

https://jojoldu.tistory.com/698

 

2. Gradle 이해

Spring 에서 kotlin을 사용하려면 알아야하는 중요한 플러그인이 있다.

Kotlin 의 클래스와 멤버(프로퍼티나 함수) 는 final 이 설정되어있다. 그래서 상속받을 수도 getter, setter 등의 메서드를 오버라이드 할 수 없다. 

그래서 kotlin 에서 공식적으로 지원해주는 All-open컴파일 플러그인을 적용해준다.

 

처음 Gradle이 생성되었을 때 아래와 같은 코드가 없다면 추가해준다. 여러 블로그를 참고하면서 하고 있는데 다들 여러가지.. 추가 하시던데 또 몇개는 추가를 안하신다. 이거는 프로젝트 실행해보면서 다시 수정하거나 냅둘 예정이다

kotlin("plugin.spring") version "1.7.22"



allOpen {
    annotation("javax.persistence.Entity")
    annotation("javax.persistence.MappedSuperclass")
    annotation("javax.persistence.Embeddable")
}

kotlin 에서 open 키워드가 없으면 final 로 적용되어 open 키워드가 없는이상 Proxy 클래스를 생성하지 못한다.

(Proxy 클래스를 생성하기 위해 상속이 가능해야 한다) 

 

 

3. 버전관리

깃에 올립니다.

https://github.com/aejeong-context/aejeong_blog.git

 

 

이제 프로젝트해야징

 

 

 

+ 테스트

 

intellij http 로 api 테스트 (포스트맨으로 해도 무관)

반응형