Spring/Spring ์ด๋ก 

Spring ์ด๋ก  + SIA ๊ทธ๋ฃน์Šคํ„ฐ๋””(2์žฅ) :) Spring์—์„œ ์‚ฌ์šฉํ•˜๋Š” Template์˜ ์ข…๋ฅ˜์™€ WAR, JAR์— ๋”ฐ๋ฅธ Template ์ฑ„ํƒ

euncheol kim 2022. 5. 14. 21:22

 


๐Ÿ‘จ‍๐Ÿ‘จ‍๐Ÿ‘ฆ‍๐Ÿ‘ฆ SpringInAction Group Study [์ด์ฑ„๋ฏผ, ๊ถŒํƒœ๊ตฌ, ์ตœ์žฌํ˜ธ, ๊ณฝํ˜„๊ธฐ, ๊น€์€์ฒ ]

group - GIT : https://github.com/euncheol-kim/SpringInActionGroupStudy

 

GitHub - euncheol-kim/SpringInActionGroupStudy: SpringInAction ์Šคํ„ฐ๋”” ์ €์žฅ์†Œ์ž…๋‹ˆ๋‹ค.

SpringInAction ์Šคํ„ฐ๋”” ์ €์žฅ์†Œ์ž…๋‹ˆ๋‹ค. Contribute to euncheol-kim/SpringInActionGroupStudy development by creating an account on GitHub.

github.com

 

์ด์ฑ„๋ฏผ ๋‹˜ : https://github.com/CokeLee777

๊ถŒํƒœ๊ตฌ ๋‹˜ : https://github.com/Hashtae9

์ตœ์žฌํ˜ธ ๋‹˜ : https://github.com/jaero0725

๊ณฝํ˜„๊ธฐ ๋‹˜ : https://github.com/nicebyy

๊น€์€์ฒ  (๋ณธ์ธ): https://github.com/euncheol-kim

 

์ž‘์„ฑ์ž : ๊น€์€์ฒ 

 




 

goal

view ํ…œํ”Œ๋ฆฟ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ ํƒํ•˜๊ธฐ

 

1. ๋ทฐ ํ…œํ”Œ๋ฆฟ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ ํƒํ•˜๊ธฐ


[1] ์Šคํ”„๋ง์—์„œ ์ง€์›ํ•˜๋Š” ํ…œํ”Œ๋ฆฟ


ํ…œํ”Œ๋ฆฟ(์—”์ง„) ์Šคํ”„๋ง ๋ถ€ํŠธ ์Šคํƒ€ํ„ฐ ์˜์กด์„ฑ
FreeMarker spring-boot-starter-freemarker
Groovy ํ…œํ”Œ๋ฆฟ spring-boot-starter-groovy-templates
JavaServer Pages(JSP) ์—†์Œ (Tomcat์ด๋‚˜ Jetty ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ ์ž์ฒด์—์„œ ์ œ๊ณต)
Mustache spring-boot-starter-groovy-mustache
Thymeleaf spring-boot-starter-thymeleaf

 

[2] Packaging์— ๋”ฐ๋ฅธ ํ…œํ”Œ๋ฆฟ ํ˜ธํ™˜ ์œ ๋ฌด


Packaging ํ˜ธํ™˜๋˜๋Š” ํ…œํ”Œ๋ฆฟ
Jar JSP๋ฅผ ์ œ์™ธํ•œ Springboot์—์„œ ํ˜ธํ™˜ํ•˜๋Š” ๋ชจ๋“  ํ…œํ”Œ๋ฆฟ
War JSP๋งŒ์„ ์ทจ๊ธ‰

WAR๋ฐฐํฌ ์‚ฌ๋ก€



2. ํ…œํ”Œ๋ฆฟ ์บ์‹ฑ


๊ธฐ๋ณธ์ ์œผ๋กœ ํ…œํ”Œ๋ฆฟ์€ ์ตœ์กฐ ์‚ฌ์šฉ๋  ๋•Œ ํ•œ ๋ฒˆ๋งŒ ํŒŒ์‹ฑ(์ฝ”๋“œ ๋ถ„์„)๋œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํŒŒ์‹ฑ๋œ ๊ฒฐ๊ณผ๋Š” ํ–ฅํ›„ ์‚ฌ์šฉ์„ ์œ„ํ•ด ์บ์‹œ์— ์ €์žฅ๋œ๋‹ค.

ํ•˜์ง€๋งŒ ๊ฐœ๋ฐœ์ด ์ด๋ฃจ์–ด์ง€๋Š” ๋‹จ๊ณ„์—์„œ ์บ์‹ฑ๋œ ํ…œํ”Œ๋ฆฟ์„ ๋งค๋ฒˆ ๋ถˆ๋Ÿฌ์˜จ๋‹ค๋ฉด, ๊ฐœ๋ฐœ์ž์˜ ์ˆ˜์ •์‚ฌํ•ญ์ด ๋ฐ”๋กœ ๋ฐ”๋กœ ์ ์šฉ์ด ๋˜์ง€ ์•Š์•„ ์ฝ”๋“œ๊ฐ€ ์ˆ˜์ •๋˜์–ด์งˆ ๋•Œ๋งˆ๋‹ค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋‹ค์‹œ ์‹คํ–‰ํ•ด์•ผํ•œ๋‹ค.

 

[1] ํ…œํ”Œ๋ฆฟ ์บ์‹ฑ ๋น„ํ™œ์„ฑํ™”

 


์œ„์™€ ๊ฐ™์€ ๋ฒˆ๊ฑฐ๋กœ์›€์„ ๋ง‰๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ฐ ํ…œํ”Œ๋ฆฟ์˜ ์บ์‹ฑ ์†์„ฑ๋งŒ false๋กœ ์„ค์ •ํ•˜๋ฉด ๋œ๋‹ค.

๊ฐ๊ฐ์˜ ํ…œํ”Œ๋ฆฟ์˜ ์บ์‹ฑ ๋น„ํ™œ์„ฑํ™”๋Š” ์•„๋ž˜ ํ‘œ์™€ ๊ฐ™๋‹ค.

ํ…œํ”Œ๋ฆฟ(์—”์ง„) ์บ์‹ฑ ์†์„ฑ
FreeMarker spring.freemarker.cache
Groovy Templates spring.groovy.template.cache
Mustache spring.mustache.cache
Thymeleaf spring.thymeleaf.cache

๋‹จ, ํ”„๋กœ๋•์…˜์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•  ๋•Œ๋Š” ๋ฐฉ๊ธˆ ์ถ”๊ฐ€ํ•œ ์„ค์ •์„ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ true๋กœ ๋ณ€๊ฒฝํ•ด์•ผํ•œ๋‹ค.

ํ•˜์ง€๋งŒ, ์Šคํ”„๋ง ๋ถ€ํŠธ์˜ DevTools๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๋” ์‰ฝ๋‹ค. SpringInAction์˜ 1์žฅ์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด, DevTools๋ฅผ ์˜์กด์„ฑ ์„ค์ •ํ•ด๋‘”๋‹ค๋ฉด ๊ฐœ๋ฐœ ์‹œ์ ์— ๋งŽ์€ ๋„์›€์„ ์ œ๊ณตํ•˜๋ฉฐ, ๋ชจ๋“  ํ…œํ”Œ๋ฆฟ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์บ์‹ฑ์„ ๋น„ํ™œ์„ฑํ™” ํ•œ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹ค๋ฌด ์šด์˜์„ ์œ„ํ•ด ๋ฐฐํฌ๋  ๋•Œ๋Š” DevTools ์ž์‹ ์ด ๋น„ํ™œ์„ฑํ™” ๋˜๋ฏ€๋กœ ํ…œํ”Œ๋ฆฟ ์บ์‹ฑ์ด ํ™œ์„ฑํ™” ๋  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

์ถ”๊ฐ€์ž๋ฃŒ

[1] ํ…œํ”Œ๋ฆฟ


1. Mustache, Thymeleaf


Mustache ํŠน์ง•
Mustache - ๋ฌธ๋ฒ•์ด ๋‹ค๋ฅธ ํ…œํ”Œ๋ฆฟ ์—”์ง„๋ณด๋‹ค ์‹ฌํ”Œํ•˜๋‹ค.
- ๋กœ์ง ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์–ด, View์˜ ์—ญํ• ๊ณผ ์„œ๋ฒ„์˜ ์—ญํ• ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๊ตฌ๋ถ„ํ•œ๋‹ค.
- ํ™•์žฅ์ž : ๋ธ”๋ผ๋ธ”๋ผ.mustache
Thymeleaf - HTML ํƒœ๊ทธ์— ์†์„ฑ์œผ๋กœ ํ…œํ”Œ๋ฆฟ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ด ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Œ
- Vue.js ํƒœ๊ทธ ์†์„ฑ ๋ฐฉ์‹๊ณผ ๋น„์Šทํ•˜๋‹ค.

 

2. ํ…œํ”Œ๋ฆฟ ์—”์ง„๊ณผ ๊ด€๋ จ๋œ ๊ธ€


์ฐธ๊ณ ๋งํฌ : FreeMarker vs Groovy vs Mustache vs Thymeleaf, https://springhow.com/spring-boot-template-engines-comparison/, Raja Anbazhagan

 

3. ํ˜ธํ™˜์„ฑ๊ณผ ๊ด€๋ จํ•˜์—ฌ


  • thymeleaf๊ฐ€ ์งฑ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.



[2] ๋ฐœํ‘œ ํŒŒํŠธ์˜ ๋ชฐ๋ž๋˜ ๋‚ด์šฉ์ •๋ฆฌ(๋ฏธํกํ–ˆ๋˜ ๋ถ€๋ถ„)


[1] Maven, pom.xml


  • <dependency> ... <dependency> ๋‚ด๋ถ€ ํƒœ๊ทธ
    • groupId : ํ”„๋กœ์ ํŠธ ๊ณ ์œ ์‹๋ณ„ ID
    • artifactId
      • ํ”„๋กœ์ ํŠธ์˜ ๊ฐ ๊ธฐ๋Šฅ๋“ค์„ ์˜๋ฏธํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.
      • ๋ฒ„์ „ ์—†๋Š” jarํŒŒ์ผ์˜ ์ด๋ฆ„
      • ํŠน์ˆ˜ ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์†Œ๋ฌธ์ž๋กœ๋งŒ ์ž‘์„ฑ
    • version : ํ”„๋กœ์ ํŠธ์˜ version

 

[์ •๋ฆฌ] groupId๋Š” ํ”„๋กœ์ ํŠธ์˜ ํฐ ํ‹€, artifactId๋Š” ํ”„๋กœ์ ํŠธ์˜ ๊ฐ ๊ธฐ๋Šฅ์„ ์˜๋ฏธํ•œ๋‹ค.