ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 03/20(Sat) ์ธํ…”๋ฆฌ์ œ์ด(IntelliJ) ํ”„๋กœ์ ํŠธ ์„ธํŒ… ๊ธฐ๋ณธ - ์Šคํ”„๋ง
    HangHae99/TIL-hanghae99 2021. 3. 20. 23:19

    ๐Ÿšฉ

    ์ƒˆ ํ”„๋กœ์ ํŠธ ํด๋”๋ฅผ 4๊ฐœ ์งธ ๋งŒ๋“ค๊ณ  ์žˆ์–ด์„œ ์ง€๊ธˆ์€ ์กฐ๊ธˆ ๋‚˜์•„์กŒ์ง€๋งŒ, ๋‹ค์Œ๋ฒˆ์— ๋ฒ„๋ฒ…๋  ๊ฒฝ์šฐ๋ฅผ ์œ„ํ•ด ์ •๋ฆฌํ•˜๊ณ  ๋„˜์–ด๊ฐ€์ž.

     

     

    1. File -> New -> Project

     

    2. Spring initializr์—์„œ Project SDK ์„ค์ •

    ๊ผญ ๋ฒ„์ „ ํ™•์ธ ํ•  ๊ฒƒ

    ์ž๋ฐ” 8๋ฒ„์ „์œผ๋กœ ์ง„ํ–‰ ํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— SDK๋Š” 1.8 version์œผ๋กœ ์„ ํƒํ•˜๊ณ  Next ํ•œ๋‹ค.

     

     

    3. ํ”„๋กœ์ ํŠธ ์„ธํŒ…

    ๋ณธ์ธ ํ”„๋กœ์ ํŠธ์— ๋งž๊ฒŒ ์„ค์ •

    1) Group๊ณผ Artifact๋Š” ์•Œ์•„์„œ ์•Œ๋งž๊ฒŒ ์ •ํ•œ๋‹ค.

    2) ๋นŒ๋“œ๋Š” Gradle๋กœ ํ•  ๊ฑฐ์—ฌ์„œ, Gradle์— ์ฒดํฌ

    3) ์–ธ์–ด๋Š” Java

    4) Java version์€ ๊ธฐ๋ณธ 11๋กœ ์„ค์ • ๋ผ์žˆ๋Š”๋ฐ, 8๋กœ ๋ณ€๊ฒฝ ํ›„ Next ํ•œ๋‹ค. (์ž๋ฐ” 8๋ฒ„์ „์œผ๋กœ ์ง„ํ–‰ ํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ)

     

     

    4. Dependencies ์„ธํŒ…

    ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ถ”๊ฐ€

    spring์„ ํ•˜๋Š” ๊ฑฐ๋‹ˆ๊นŒ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ 5๊ฐœ๋ฅผ ๊ฒ€์ƒ‰ ํ›„ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค. 

     

    1) Spring Web

    2) Lombok

    3) Spring Data JPA

    4) H2 Database

    5) MySQL Driver

     

    Next๋ฅผ ๋ˆ„๋ฅด๊ณ  ์ €์žฅํ•  ์œ„์น˜๋ฅผ ์„ ํƒํ•œ ํ›„ Finish ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ๋‹ค.

     

     

    5. ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ํ›„ ํ•ญ์ƒ ํ™•์ธํ•ด์ค˜์•ผ ํ•˜๋Š” ์˜ต์…˜

    1) Auto Import

     

    File -> Settings ํ•ด์„œ ์ฐฝ์„ ๋„์›Œ๋„ ๋˜๊ณ , ๋‹จ์ถ•ํ‚ค ctrl + alt+ s ๋กœ Settings ์ฐฝ์„ ๋„์šด๋‹ค.

     

    Auto Import

     

    Auto Import๋ž€ import๊ฐ€ ํ•„์š”ํ•œ ๋ถ€๋ถ„์ด ์žˆ์œผ๋ฉด ์ž๋™์œผ๋กœ import ํ•ด์ค„ ์ˆ˜ ์žˆ๊ฒŒ ์„ธํŒ… ํ•˜๋Š” ์˜ต์…˜์ด๋‹ค.

    ๋ณดํ†ต ์ฝ”๋“œ๋ฅผ ๋ณต๋ถ™ํ•˜๊ฑฐ๋‚˜ import๊ฐ€ ํ•„์š”ํ•œ ์ž๋ฃŒํ˜•์„ ์“ฐ๋ฉด import๊ฐ€ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋“ค์€ ๋นจ๊ฐ„ ๋ฌผ๊ฒฐ ํ‘œ์‹œ๊ฐ€ ๋‚˜ํƒ€๋‚˜๊ณ  ๋‚ด๊ฐ€ import๋ฅผ ์ง์ ‘ ํ•ด์ค˜์•ผ ํ•˜๋Š”๋ฐ, Auto Import ์„ค์ •์„ ํ•ด๋†“์œผ๋‹ˆ ๋ณต๋ถ™ ํ•˜๊ณ  1์ดˆ ์ •๋„ ํ›„์— ์ž๋™์œผ๋กœ import๊ฐ€ ๋˜๋ฉด์„œ ๋ฐ‘์ค„์ด ์‚ฌ๋ผ์ง„ ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

     

    ๋นจ๊ฐ„ ๋„ค๋ชจ ๋ฐ•์Šค ์•ˆ์˜ insert imports on paste ์˜ต์…˜์€ ์ฝ”๋“œ๋ฅผ ๋ถ™์—ฌ๋„ฃ๊ธฐ ํ–ˆ์„ ๋•Œ import๋ฌธ์„ ์‚ฝ์ž…ํ•˜๋Š” ์˜ต์…˜์ด๊ณ , ์„ ํƒ์€ Always, Never, Ask ์ค‘ ํ•˜๋‚˜๋ฅผ ํ•˜๋ฉด ๋˜๋Š”๋ฐ, ๋‚˜๋Š” ์ด ์˜ต์…˜์„ ๋ถ™์—ฌ๋„ฃ๊ธฐ ํ•  ๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— Always์— ์ฒดํฌํ•ด์คฌ๋‹ค.

     

    ๊ทธ๋ฆฌ๊ณ  Add unambiguous imports on the fly์— ์ฒดํฌํ•˜๊ณ  OK๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ๋‹ค.

     

    ๊ฐ•์˜์—์„œ๋Š” Add~ ์—ฌ๊ธฐ์—๋งŒ ์ฒดํฌ๋ฅผ ํ•˜๊ณ , Optimize imports on the fly๋Š” ๊ทธ๋ƒฅ ๋‘๊ณ  ๋„˜์–ด๊ฐ”๋Š”๋ฐ ๋‘˜ ๋‹ค ์ฒดํฌํ•˜๊ณ  ๋„˜์–ด๊ฐ€๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค.

     

    Optimize ~ ์ด ์˜ต์…˜์€ ์ฝ”๋“œ๊ฐ€ ๋ณ€๊ฒฝ๋์„ ๋•Œ ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋Š” ์ž๋™์œผ๋กœ importํ•ด์ฃผ๊ณ , ํ•„์š” ์—†๋Š” ํŒจํ‚ค์ง€๋Š” ์ž๋™์œผ๋กœ ์‚ญ์ œํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.

    ์ฝ”๋“œ ์น˜๋ฉด์„œ ์ž๋™์™„์„ฑ์œผ๋กœ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€๋ฅผ import ํ•ด๋ฒ„๋ ค์„œ, ์›๋ž˜ ํŒจํ‚ค์ง€๋ฅผ ๋‹ค์‹œ importํ•ด์ฃผ๊ณ ๋‚˜๋‹ˆ ์ž˜๋ชป import๋œ import๋ฌธ์€ ์‚ฌ์šฉ๋˜์ง€๋„ ์•Š๋Š”๋ฐ ์ฝ”๋“œ๊ฐ€ ์‚ด์•„์žˆ์–ด์„œ(?) ์ง์ ‘ ์‚ญ์ œํ•ด์ฃผ๊ณค ํ–ˆ๋‹ค. (์‚ฌ์šฉ๋˜์ง€ ์•Š์•„ ํ๋ฆฐ ์ƒ‰์œผ๋กœ ํ‘œ์‹œ๋ผ์žˆ์–ด์„œ ๋ˆˆ์— ์ž˜ ๋„๋‹ˆ ์‚ญ์ œํ•˜๋Š” ๊ฑฐ์•ผ ์–ด๋ ค์šด ์ผ์€ ์•„๋‹ˆ์ง€๋งŒ)

    ๋‚˜์ฒ˜๋Ÿผ ์ด๋Ÿฐ ๊ฒฝ์šฐ๋ฅผ ์œ„ํ•ด ์กด์žฌํ•˜๋Š” ๊ธฐ๋Šฅ ๊ฐ™์€๋ฐ, ๋‹น์žฅ ์ฒดํฌํ•ด์ฃผ๊ณ  ์‚ฌ์šฉํ•ด์•ผ๊ฒ ๋‹ค.

     

     

    2) Annotation Processors

     

    ์†Œ์ค‘ํ•œ Lombok ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์„ธํŒ…์ด๋‹ค. (Lombok ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์„ค์น˜ํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ )

    4๋ฒˆ์˜ dependencies ์„ธํŒ…์—์„œ lombok ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์œผ๋‹ˆ ๋‹ค์Œ์œผ๋กœ ํ•ด์•ผ ํ•  ์ผ์„ ์•Œ์•„๋ณด์ž.

     

     

    build.gradle์˜ dependencies ์•ˆ์— ์˜์กด์„ฑ ์ถ”๊ฐ€

    dependencies {
        compileOnly 'org.projectlombok:lombok'
        annotationProcessor 'org.projectlombok:lombok'
    }

    dependencies ์•ˆ์— ๋‹ค๋ฅธ ๊ฒƒ๋“ค๋„ ๋งŽ์ด ๋“ค์–ด ์žˆ๋Š”๋ฐ, lombok๋ถ€๋ถ„๋งŒ ๋ณด๋ฉด ์ด๋ ‡๋‹ค.

     

     

     

    ๋‹ค์Œ์œผ๋กœ ํ•ด์•ผํ•  ์ผ์€?

    Annotation Processing

    Annotation Processors์— ๋“ค์–ด๊ฐ€์„œ Enable annotation processing์— ๋ฐ˜๋“œ์‹œ ์ฒดํฌํ•˜๊ณ  OK ํ•˜๊ธฐ.

     

     

     

    ๋Œ“๊ธ€