๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Spring/Boost Course Web

4.2 Layered Architecture

1) ๋ ˆ์ด์–ด๋“œ ์•„ํ‚คํ…์ฒ˜๋ž€?

Controller์—์„œ ์ค‘๋ณต๋˜๋Š” ๋ถ€๋ถ„์„ ์ฒ˜๋ฆฌํ•˜๋ ค๋ฉด?

  • ๋ณ„๋„์˜ ๊ฐ์ฒด๋กœ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

  • ๋ณ„๋„์˜ ๋ฉ”์†Œ๋“œ๋กœ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

  • ์˜ˆ๋ฅผ ๋“ค์–ด ์‡ผํ•‘๋ชฐ์—์„œ ๊ฒŒ์‹œํŒ์—์„œ๋„ ํšŒ์› ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ฃผ๊ณ , ์ƒํ’ˆ ๋ชฉ๋ก ๋ณด๊ธฐ์—์„œ๋„ ํšŒ์› ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ค˜์•ผ ํ•œ๋‹ค๋ฉด ํšŒ์› ์ •๋ณด๋ฅผ ์ฝ์–ด์˜ค๋Š” ์ฝ”๋“œ๋Š” ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ์š”?

 

์ปจํŠธ๋กค๋Ÿฌ์™€ ์„œ๋น„์Šค

  • ๋น„์ง€๋‹ˆ์Šค ๋ฉ”์†Œ๋“œ๋ฅผ ๋ณ„๋„์˜ Service๊ฐ์ฒด์—์„œ ๊ตฌํ˜„ํ•˜๋„๋ก ํ•˜๊ณ  ์ปจํŠธ๋กค๋Ÿฌ๋Š” Service๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

 

์„œ๋น„์Šค(Service)๊ฐ์ฒด๋ž€?

๋น„์ง€๋‹ˆ์Šค ๋กœ์ง(Business logic)์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ์„œ๋น„์Šค ๊ฐ์ฒด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๋ณดํ†ต ํ•˜๋‚˜์˜ ๋น„์ง€๋‹ˆ์Šค ๋กœ์ง์€ ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

 

ํŠธ๋žœ์žญ์…˜(Transaction)์ด๋ž€?

ํŠธ๋žœ์žญ์…˜์˜ ํŠน์ง•์€ ํฌ๊ฒŒ 4๊ฐ€์ง€๋กœ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค.

  1. ์›์ž์„ฑ (Atomicity) ์ „์ฒด๊ฐ€ ์„ฑ๊ณตํ•˜๊ฑฐ๋‚˜ ์ „์ฒด๊ฐ€ ์‹คํŒจํ•˜๊ฑฐ๋‚˜

  2. ์ผ๊ด€์„ฑ (Consistency) ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜ ๊ฒฐ๊ณผ๊ฐ€.

  3. ๋…๋ฆฝ์„ฑ (Isolation) ๋‘˜ ์ด์ƒ์˜ ํŠธ๋žœ์žญ์…˜ ๋™์‹œ ๋ณ‘ํ–‰ ์‹คํ–‰์ผ ๋•Œ  - ์™„๋ฃŒ ์ „๊นŒ์ง€๋Š” ๋ชฐ๋ผ

  4. ์ง€์†์„ฑ (Durability) ํŠธ๋žœ์žญ์…˜์ด ์™„๋ฃŒ๋˜๋ฉด ์˜๊ตฌ์  ์ •๋ณด

 

์›์ž์„ฑ (Atomicity)

์˜ˆ๋ฅผ ๋“ค์–ด "์ถœ๊ธˆ"์ด๋ผ๋Š” ๊ธฐ๋Šฅ์˜ ํ๋ฆ„์ด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ด…์‹œ๋‹ค.

  1. ์ž”์•ก์ด ์–ผ๋งˆ์ธ์ง€ ์กฐํšŒํ•œ๋‹ค.

  2. ์ถœ๊ธˆํ•˜๋ ค๋Š” ๊ธˆ์•ก์ด ์ž”์•ก๋ณด๋‹ค ์ž‘์€์ง€ ๊ฒ€์‚ฌํ•œ๋‹ค.

  3. ์ถœ๊ธˆํ•˜๋ ค๋Š” ๊ธˆ์•ก์ด ์ž”์•ก๋ณด๋‹ค ์ž‘๋‹ค๋ฉด (์ž”์•ก - ์ถœ๊ธˆ์•ก)์œผ๋กœ ์ˆ˜์ •ํ•œ๋‹ค.

  4. ์–ธ์ œ, ์–ด๋””์„œ ์ถœ๊ธˆํ–ˆ๋Š”์ง€ ์ •๋ณด๋ฅผ ๊ธฐ๋กํ•œ๋‹ค.

  5. ์‚ฌ์šฉ์ž์—๊ฒŒ ์ถœ๊ธˆํ•œ๋‹ค.

์œ„์˜ ์ž‘์—…์ด 4๋ฒˆ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”?

4๋ฒˆ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค๋ฉด, ์•ž์˜ ์ž‘์—…์„ ๋ชจ๋‘ ์›๋ž˜๋Œ€๋กœ ๋ณต์›์„ ์‹œ์ผœ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฅผ rollback์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

5๋ฒˆ๊นŒ์ง€ ๋ชจ๋‘ ์„ฑ๊ณตํ–ˆ์„ ๋•Œ๋งŒ ์ •๋ณด๋ฅผ ๋ชจ๋‘ ๋ฐ˜์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฅผ commit ํ•œ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ rollback ํ•˜๊ฑฐ๋‚˜ commit์„ ํ•˜๊ฒŒ ๋˜๋ฉด ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ๊ฐ€ ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

 

์ผ๊ด€์„ฑ (Consistency)

์ผ๊ด€์„ฑ์€ ํŠธ๋žœ์žญ์…˜์˜ ์ž‘์—… ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๊ฐ€ ํ•ญ์ƒ ์ผ๊ด€์„ฑ์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํŠธ๋žœ์žญ์…˜์ด ์ง„ํ–‰๋˜๋Š” ๋™์•ˆ์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋”๋ผ๋„ ์—…๋ฐ์ดํŠธ๋œ ๋ฐ์ดํ„ฐ๋กœ ํŠธ๋žœ์žญ์…˜์ด ์ง„ํ–‰๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์ฒ˜์Œ์— ํŠธ๋žœ์žญ์…˜์„ ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์ฐธ์กฐํ•œ ๋ฐ์ดํ„ฐ๋กœ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•จ์œผ๋กœ์จ ๊ฐ ์‚ฌ์šฉ์ž๋Š” ์ผ๊ด€์„ฑ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

๋…๋ฆฝ์„ฑ (Isolation)

๋…๋ฆฝ์„ฑ์€ ๋‘˜ ์ด์ƒ์˜ ํŠธ๋žœ์žญ์…˜์ด ๋™์‹œ์— ๋ณ‘ํ–‰ ์‹คํ–‰๋˜๊ณ  ์žˆ์„ ๊ฒฝ์šฐ์— ์–ด๋Š ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์ด๋ผ๋„ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์˜ ์—ฐ์‚ฐ์„ ๋ผ์–ด๋“ค ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

ํ•˜๋‚˜์˜ ํŠน์ • ํŠธ๋žœ์žญ์…˜์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€, ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ํŠน์ • ํŠธ๋žœ์žญ์…˜์˜ ๊ฒฐ๊ณผ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

 

์ง€์†์„ฑ (Durability)

์ง€์†์„ฑ์€ ํŠธ๋žœ์žญ์…˜์ด ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋ฌ์„ ๊ฒฝ์šฐ, ๊ฒฐ๊ณผ๋Š” ์˜๊ตฌ์ ์œผ๋กœ ๋ฐ˜์˜๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.

 

JDBC ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•

DB์— ์—ฐ๊ฒฐ๋œ ํ›„ Connection๊ฐ์ฒด์˜ setAutoCommit๋ฉ”์†Œ๋“œ์— false๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

์ž…๋ ฅ, ์ˆ˜์ •, ์‚ญ์ œ SQL์ด ์‹คํ–‰์„ ํ•œ ํ›„ ๋ชจ๋‘ ์„ฑ๊ณตํ–ˆ์„ ๊ฒฝ์šฐ Connection์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” commit()๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค.

 

@EnableTransactionManagement

Spring Java ConfigํŒŒ์ผ์—์„œ ํŠธ๋žœ์žญ์…˜์„ ํ™œ์„ฑํ™” ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์• ๋…ธํ…Œ์ด์…˜์ž…๋‹ˆ๋‹ค.

Java Config๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด PlatformTransactionManager ๊ตฌํ˜„์ฒด๋ฅผ ๋ชจ๋‘ ์ฐพ์•„์„œ ๊ทธ ์ค‘์— ํ•˜๋‚˜๋ฅผ ๋งคํ•‘ํ•ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํŠน์ • ํŠธ๋žœ์žญ์…˜ ๋ฉ”๋‹ˆ์ €๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด TransactionManagementConfigurer๋ฅผ Java ConfigํŒŒ์ผ์—์„œ ๊ตฌํ˜„ํ•˜๊ณ  ์›ํ•˜๋Š” ํŠธ๋žœ์žญ์…˜ ๋ฉ”๋‹ˆ์ €๋ฅผ ๋ฆฌํ„ดํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

์•„๋‹ˆ๋ฉด, ํŠน์ • ํŠธ๋žœ์žญ์…˜ ๋ฉ”๋‹ˆ์ € ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ์‹œ @Primary ์• ๋…ธํ…Œ์ด์…˜์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

 

์„œ๋น„์Šค ๊ฐ์ฒด์—์„œ ์ค‘๋ณต์œผ๋กœ ํ˜ธ์ถœ๋˜๋Š” ์ฝ”๋“œ์˜ ์ฒ˜๋ฆฌ

๋ฐ์ดํ„ฐ ์—‘์„ธ์Šค ๋ฉ”์†Œ๋“œ๋ฅผ ๋ณ„๋„์˜ Repository(Dao) ๊ฐ์ฒด์—์„œ ๊ตฌํ˜„ํ•˜๋„๋ก ํ•˜๊ณ  Service๋Š” Repository๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

 

๋ ˆ์ด์–ด๋“œ ์•„ํ‚คํ…์ฒ˜

presentation layer์—์„œ๋Š” ์ปจํŠธ๋กค๋Ÿฌ ๊ฐ์ฒด๊ฐ€ ๋™์ž‘ํ•˜๊ฒŒ ํ•œ๋‹ค.

Service Layer์—์„œ๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์„œ๋น„์Šค ๊ฐ์ฒด๊ฐ€ ๋™์ž‘ํ•˜๊ฒŒ ํ•œ๋‹ค.

Repository Layer์—์„œ๋Š” db๋กœ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•œ๋‹ค. (DAO)

 

์„ค์ •์˜ ๋ถ„๋ฆฌ

Spring ์„ค์ • ํŒŒ์ผ์„ ํ”„๋ฆฌ์  ํ…Œ์ด์…˜ ๋ ˆ์ด์–ด์ชฝ๊ณผ ๋‚˜๋จธ์ง€๋ฅผ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

web.xml ํŒŒ์ผ์—์„œ ํ”„๋ฆฌ์  ํ…Œ์ด์…˜ ๋ ˆ์ด์–ด์— ๋Œ€ํ•œ ์Šคํ”„๋ง ์„ค์ •์€ DispathcerServlet์ด ์ฝ๋„๋ก ํ•˜๊ณ , 

๊ทธ ์™ธ์˜ ์„ค์ •์€ ContextLoaderListener๋ฅผ ํ†ตํ•ด์„œ ์ฝ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

 

DispatcherServlet์„ ๊ฒฝ์šฐ์— ๋”ฐ๋ผ์„œ 2๊ฐœ ์ด์ƒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ 

์ด ๊ฒฝ์šฐ์—๋Š” ๊ฐ๊ฐ์˜ DispathcerServlet์˜ ApplicationContext๊ฐ€ ๊ฐ๊ฐ ๋…๋ฆฝ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— 

๊ฐ๊ฐ์˜ ์„ค์ • ํŒŒ์ผ์—์„œ ์ƒ์„ฑํ•œ ๋นˆ์„ ์„œ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์œ„์˜ ๊ฒฝ์šฐ์™€ ๊ฐ™์ด ๋™์‹œ์— ํ•„์š”ํ•œ ๋นˆ์€ ContextLoaderListener๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ContextLoaderListener์™€ DispatcherServlet์€ ๊ฐ๊ฐ ApplicationContext๋ฅผ ์ƒ์„ฑํ•˜๋Š”๋ฐ, ContextLoaderListener๊ฐ€ ์ƒ์„ฑํ•˜๋Š” ApplicationContext๊ฐ€ root์ปจํ…์ŠคํŠธ๊ฐ€ ๋˜๊ณ  DispatcherServlet์ด ์ƒ์„ฑํ•œ ์ธ์Šคํ„ด์Šค๋Š” root์ปจํ…์ŠคํŠธ๋ฅผ ๋ถ€๋ชจ๋กœ ํ•˜๋Š” ์ž์‹ ์ปจํ…์ŠคํŠธ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ, ์ž์‹ ์ปจํ…์ŠคํŠธ๋“ค์€ root์ปจํ…์ŠคํŠธ์˜ ์„ค์ • ๋นˆ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ด€๋ จ ํŒŒ์ผ ๋งํฌ: web.xml


2) ๋ ˆ์ด์–ด๋“œ ์•„ํ‚คํ…์ฒ˜ ์‹ค์Šต

 

ํ•ต์‹ฌ ๊ฐœ๋…

  • @Controller

  • @Service

  • @Repository

  • @Transactional

๋ฐฉ๋ช…๋ก ๋งŒ๋“ค๊ธฐ ์‹ค์Šต

์ฝ”๋“œ ์‹ค์Šต: guestbook05

 

<์š”๊ตฌ์‚ฌํ•ญ>

Spring JDBC๋ฅผ ์ด์šฉํ•œ Dao ์ž‘์„ฑ

controller + service +  dao ๋กœ ๋ ˆ์ด์–ด๋“œ ์•„ํ‚คํ…์ณ

ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ

Spring MVC์—์„œ ํผ ๊ฐ’ ์ž…๋ ฅ๋ฐ›๊ธฐ

Spring MVC์—์„œ redirect ํ•˜๊ธฐ

Controller์—์„œ jsp์—๊ฒŒ ์ „๋‹ฌํ•œ ๊ฐ’์„ JSTL๊ณผ EL์„ ์ด์šฉํ•ด ์ถœ๋ ฅํ•˜๊ธฐ

 

๋ฐฉ๋ช…๋ก ์ •๋ณด๋Š” guestbook ํ…Œ์ด๋ธ”์— ์ €์žฅ๋œ๋‹ค.

id๋Š” ์ž๋™์œผ๋กœ ์ž…๋ ฅ๋œ๋‹ค.

id, ์ด๋ฆ„, ๋‚ด์šฉ, ๋“ฑ๋ก์ผ์„ ์ €์žฅํ•œ๋‹ค

 

http://localhost:8080/guestbook/ ์„ ์š”์ฒญํ•˜๋ฉด ์ž๋™์œผ๋กœ /guestbook/list ๋กœ redirecting ํ•œ๋‹ค

๋ฐฉ๋ช…๋ก์ด ์—†์œผ๋ฉด ๊ฑด์ˆ˜๋Š” 0์ด ๋‚˜์˜ค๊ณ  ์•„๋ž˜์— ๋ฐฉ๋ช…๋ก์„ ์ž…๋ ฅํ•˜๋Š” ํผ์ด ๋ณด์—ฌ์ง„๋‹ค.

์ด๋ฆ„๊ณผ ๋‚ด์šฉ์„ ์ž…๋ ฅํ•˜๊ณ , ๋“ฑ๋ก๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด /guestbook/write URL๋กœ ์ž…๋ ฅํ•œ ๊ฐ’์„ ์ „๋‹ฌํ•˜์—ฌ ์ €์žฅํ•œ๋‹ค.

๊ฐ’์ด ์ €์žฅ๋œ ์ดํ›„์—๋Š” /guestbook/list๋กœ redirect ๋œ๋‹ค.

์ž…๋ ฅํ•œ ํ•œ ๊ฑด์˜ ์ •๋ณด๊ฐ€ ๋ณด์—ฌ์ง„๋‹ค

๋ฐฉ๋ช…๋ก ๋‚ด์šฉ๊ณผ ํผ ์‚ฌ์ด์˜ ์ˆซ์ž๋Š” ๋ฐฉ๋ช…๋ก ํŽ˜์ด์ง€ ๋งํฌ. ๋ฐฉ๋ช…๋ก 5๊ฑด๋‹น 1ํŽ˜์ด์ง€๋กœ ์„ค์ •

1 ํŽ˜์ด์ง€๋ฅผ ๋ˆ„๋ฅด๋ฉด /guestbook/list?start=0์„ ์š”์ฒญํ•˜๊ณ  (==/guestbook/list)

2 ํŽ˜์ด์ง€๋ฅผ ๋ˆ„๋ฅด๋ฉด /guestbook/list?start=5๋ฅผ ์š”์ฒญํ•˜๊ฒŒ ๋œ๋‹ค.

 

๋ฐฉ๋ช…๋ก์— ๊ธ€์„ ์“ฐ๊ฑฐ๋‚˜, ๊ธ€์„ ์‚ญ์ œํ•  ๋•Œ๋Š” log ํ…Œ์ด๋ธ”์— ํด๋ผ์ด์–ธํŠธ์˜ ip์ฃผ์†Œ, ๋“ฑ๋ก(์‚ญ์ œ) ์‹œ๊ฐ„, ๋“ฑ๋ก/์‚ญ์ œ(method ์นผ๋Ÿผ) ์ •๋ณด๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•œ๋‹ค. id๋Š” ์ž๋™์œผ๋กœ ์ž…๋ ฅ๋˜๋„๋ก ํ•œ๋‹ค.

 

Class Diagram

 

4๊ฐœ๊ฐ€ ์„ค์ •ํŒŒ์ผ

์›น ๋ ˆ์ด์–ด ์„ค์ • ํŒŒ์ผ: web.xml, WebMvcContextConfiguration.java

๋น„์ง€๋‹ˆ์Šค, ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ ๋ ˆ์ด์–ด ์„ค์ • ํŒŒ์ผ: ApplicationConfig.java, DbConfig.java

web.xml: DispatcherServlet์ด ์ฝ์–ด๋“ค์ด๋Š” WebMvcContextConfigurationํŒŒ์ผ๊ณผ

ApplicationContextListener๊ฐ€ ์ฝ์–ด๋“ค์ผ ApplicationConfig ํŒŒ์ผ์„ ์„ค์ •ํ•œ๋‹ค.

ApplicationConfig.java ๋Š” DbConfig importํ•œ๋‹ค.

 

URL ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ํ•ธ๋“ค๋Ÿฌ์ธ GuestbookController

์ด๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์„œ๋น„์Šค ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค.

 

์„ค์ •ํŒŒ์ผ
web.xml
(package: kr.or.connect.guestbook.config)์˜
WebMvcContextConfiguration.java
DBConfig.java
ApplicationConfig.java

์ปจํŠธ๋กค๋Ÿฌ
(package: kr.or.connect.guestbook.controller)์˜
GuestbookController.java

์„œ๋น„์Šค
(package: kr.or.connect.guestbook.service)์˜
GuestbookService.java
(package: kr.or.connect.guestbook.service.impl)์˜
GuestbookServiceImpl.java
๊ด€๋ จ ํ…Œ์ŠคํŠธ ํŒŒ์ผ GuestbookServiceTest.java

Dto
(package: kr.or.connect.guestbook.dto)์˜
Guestbook.java
Log.java
 
Dao
(package: kr.or.connect.guestbook.dao)์˜
LogDao.java
GuestbookDaoSqls.java
GuestbookDao.java
๊ด€๋ จ ํ…Œ์ŠคํŠธ ํŒŒ์ผ GuestbookDaoTest.java

๋ทฐ
index.jsp
list.jsp

 

 

Maven ํ”„๋กœ์ ํŠธ ์ž‘์„ฑ ์‹œ ์ž๋™์œผ๋กœ ์„ค์ •๋˜์ง€ ์•Š์•„์„œ ๊ท€์ฐฎ์€ ์ž‘์—…๋“ค์„ ์ˆ˜ํ–‰ํ•ด์•ผํ•œ๋‹ค.

Dynamic Web Project๋กœ ์ƒ์„ฑํ•˜๊ณ  Maven์œผ๋กœ convert ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋‚œ ์ธํ…”๋ฆฌ์ œ์ด๋กœ ๊ฐˆ์•„ํƒ”๋‹ค. ใ…Žใ…Ž

'Spring > Boost Course Web' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

4.5 Swagger  (0) 2020.11.19
4.4 Controller  (0) 2020.11.19
4.3 WEB API  (0) 2020.11.19
4.1 Spring MVC  (0) 2020.11.19
3.3 Spring JDBC  (0) 2020.11.19
3.2 Spring Test  (0) 2020.11.19