๋ฉ‹์‚ฌ Backend Plus 5์ผ์ฐจ ๐Ÿฆ

์‹ ์žฌ์›ยท2023๋…„ 10์›” 27์ผ

Port (ํฌํŠธ) ๋ฒˆํ˜ธ

  • ์‰ฝ๊ฒŒ ์ƒ๊ฐํ•ด์„œ ์„ ์ฐฉ์žฅ์˜ ๋ฐฐ ๊ฐ€ ์žˆ์–ด ์ž๋ฆฌ๋ฅผ ์ฐจ์ง€ ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

  • ํฌํŠธ๋ฒˆํ˜ธ๋Š” ์ด๋ฏธ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉด, ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.
    ํฌํŠธ๋ฒˆํ˜ธ๋Š” 0 ~ 65535 (2์˜ 15์Šน - 1) ๊นŒ์ง€ ์‚ฌ์šฉํ• ์ˆ˜ ์žˆ์ง€๋งŒ,
    0 ~ 1000 ์‚ฌ์ด์˜ ๋ฒˆํ˜ธ๋Š” ์‚ฌ์šฉ ํ•˜์ง€ ๋ง์ž๋Š” ๊ทœ์•…์ด ์žˆ์œผ๋ฉฐ, 80 : http 21 : ftp, 22 : ssh ๋“ฑ์—์„œ ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์ด๋ฏธ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”๊ฑธ ์•Œ์ˆ˜ ์žˆ๋‹ค.

โžก yml์„ค์ • ํŒŒ์ผ์—์„œ ํฌํŠธ๋ฒˆํ˜ธ ๋ณ€๊ฒฝํ•˜๊ธฐ (ํŠธ๋ฆฌ๊ตฌ์กฐ๊ฐ€ ์•„๋‹Œ properties์€ ์กฐ๊ธˆ๋‹ค๋ฆ„)

server:
  port: 8081

๋จธ์Šคํ…Œ์น˜ ๋ž€ ?

  • ํƒ€์ž„๋ฆฌํ”„ ์™€ ์œ ์‚ฌํ•œ ํ…œํ”Œ๋ฆฟ ์—”์ง„์ด๋‹ค.
    (์Šคํ”„๋ง์—์„œ๋Š” ํƒ€์ž„๋ฆฌํ”„๋ฅผ ์ ๊ทน์ ์œผ๋กœ ๋ฐ€๊ณ ์žˆ๊ณ  ๊ถŒ์žฅํ•˜๊ณ ์žˆ์Œ)

๋จธ์Šคํ…Œ์น˜๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์•ž์„œ ์„ค์ • ํ•ด์ค˜์•ผ ํ•˜๋Š” ๊ฒƒ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์•„๋ž˜์˜ ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.
implementation 'org.springframework.boot:spring-boot-starter-mustache'
  1. yml ํ˜น์€ properties ํŒŒ์ผ์„ ์„ค์ •ํ•ด์ค€๋‹ค.
server:
  servlet:
    encoding:
      force-response: true # ํ•œ๊ธ€ ๊นจ์ง ๋ฐฉ์ง€
  port: 8081

spring:
  mustache:
    prefix: classpath:/templates/ # view ํŒŒ์ผ ํŒจํ‚ค์ง€  
    suffix: .html # html ์„ค์ •
  1. ์‹ค์Šต
<!-- input -->
<body>
<form action="/myname_output" method="post">
    <label for="name">์ด๋ฆ„:</label><br>
    <input type="text" id="name" name="name"><br>
    <label for="phone">์ „ํ™”๋ฒˆํ˜ธ:</label><br>
    <input type="text" id="phone" name="phone"><br><br>
    <input type="submit" value="์ œ์ถœ">
</form>
</body>

์œ„์™€ ๊ฐ™์€ html ์ฝ”๋“œ์—์„œ ์ด๋ฆ„๊ณผ ์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅ๋ฐ›์œผ๋ฉด /myname_output URL๋กœ POST ์š”์ฒญ์„ ๋ณด๋‚ด๊ฒŒ๋ฉ๋‹ˆ๋‹ค.


Model ๊ฐ์ฒด์— ๋‹ด์•„์„œ ๋ณด๋‚ด๋Š”๊ฑด ํƒ€์ž„๋ฆฌํ”„๋ž‘ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.


์•„๋ž˜์˜ html ์ฝ”๋“œ์™€ ๊ฐ™์ด ๋จธ์Šคํ…Œ์น˜๋Š” {{ ๋ฐ์ดํ„ฐ }} ๋ฅผ ๋‹ด์•„์„œ ํŽ˜์ด์ง€์— ๋ฟŒ๋ฆฌ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

<!-- output -->
<body>
<h1>์ž…๋ ฅ ๊ฒฐ๊ณผ</h1>

<h3>์ด๋ฆ„์€ {{name}} ์ž…๋‹ˆ๋‹ค.</h3>
<h3>์ „ํ™”๋ฒˆํ˜ธ๋Š” {{phone}} ์ž…๋‹ˆ๋‹ค.</h3>
</body>

GET ๋ฐฉ์‹ : header (๋งŽ์€ ์ •๋ณด) ๋งŒ ๋ณด๋‚ธ๋‹ค.

POST ๋ฐฉ์‹ : header๋ฅผ ๋จผ์ € ๋ณด๋‚ด๊ณ  ๋‚˜๋จธ์ง€ ๋ฐ์ดํ„ฐ๋Š” body์— ํƒœ์›Œ ๋ณด๋‚ธ๋‹ค.

DAO, DAOImpl, Service, ServiceImpl

DAO (์‹ค์งˆ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผ)

  • ๋ณดํ†ต DAO๋Š” ํ…Œ์ด๋ธ” ํ•˜๋‚˜๋‹น ํ•˜๋‚˜ ๋งŒ๋“ ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
  • ์‹ค์งˆ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ ‘๊ทผํ•˜์—ฌ, DTO ํด๋ž˜์Šค๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ด๋™์‹œํ‚ต๋‹ˆ๋‹ค.

์•„๋ž˜์˜ ์‚ฌ์ง„์ฒ˜๋Ÿผ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋งŒ๋“ค๋ฉฐ ๊ทธ ์ด์œ ๋Š” ๋‹คํ˜•์„ฑ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
(Service ์ธํ„ฐํŽ˜์ด์Šค๋„ ๋งˆ์ฐฌ๊ฐ€์ง€)

Impl

  • Impl ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ตฌํ˜„์ฒด๋กœ ๋„ค์ด๋ฐ ํ•˜๊ธฐ ์œ„ํ•ด ์ ‘๋ฏธ์–ด๋กœ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋ฉฐ, ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ตฌํ˜„์ฒด๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š” ์ด์œ ๋Š” ์œ ์—ฐ์„ฑ๊ณผ ํ™•์žฅ์„ฑ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์•„๋ž˜์˜ ์‚ฌ์ง„์ฒ˜๋Ÿผ implements ํ•˜์—ฌ ๊ตฌํ˜„ํ• ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ตฌํ˜„์ฒด (Impl) ์—๋Š” ์ ์ ˆํ•œ ์–ด๋…ธํ…Œ์ด์…˜์„ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
(@Repository, @Service ๋“ฑ)

์ฒ˜์Œ ์•Œ์•˜๋˜ ์ 

์ปจํŠธ๋กค๋Ÿฌ ๋‹จ์—์„œ ๊ตฌํ˜„์ฒด๋ฅผ ์ฃผ์ž… (DI) ๋ฐ›๋Š”๊ฒƒ์ด ์•„๋‹Œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ฃผ์ž… ๋ฐ›๋Š”๊ฒƒ์„ ์ฒ˜์Œ ์•Œ์•˜์Šต๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€