🌏 WEB/Kotlien

SpringBoot - kotlin ν”„λ‘œμ νŠΈ μ„ΈνŒ…ν•˜κΈ°

μ• μ •μ“° 2023. 3. 8. 12:47

μ½”ν‹€λ¦° 곡뢀λ₯Ό μ‹œμž‘ν•˜λ €κ³  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 ν…ŒμŠ€νŠΈ (포슀트맨으둜 해도 무관)

λ°˜μ‘ν˜•