์ฑ„๋„ํ†ก ์•„์ด์ฝ˜

[๊ฐœ์ •ํŒ 2023-11-27] Spring Boot 3.x ๋ฅผ ์ด์šฉํ•œ RESTful Web Services ๊ฐœ๋ฐœ

์ด ๊ฐ•์˜๋Š” Spring Boot๋ฅผ ์ด์šฉํ•ด์„œ RESTful Web Services ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๋Š” ๊ณผ์ •์— ๋Œ€ํ•ด ํ•™์Šตํ•˜๋Š” ๊ฐ•์˜์œผ๋กœ์จ, REST API ์„ค๊ณ„์— ํ•„์š”ํ•œ ๊ธฐ๋ณธ ์ง€์‹์— ๋Œ€ํ•ด ํ•™์Šตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

(4.8) ์ˆ˜๊ฐ•ํ‰ 466๊ฐœ

์ˆ˜๊ฐ•์ƒ 4,910๋ช…

๋‚œ์ด๋„ ์ดˆ๊ธ‰

์ˆ˜๊ฐ•๊ธฐํ•œ ๋ฌด์ œํ•œ

๋จผ์ € ๊ฒฝํ—˜ํ•œ ์ˆ˜๊ฐ•์ƒ๋“ค์˜ ํ›„๊ธฐ

๋จผ์ € ๊ฒฝํ—˜ํ•œ ์ˆ˜๊ฐ•์ƒ๋“ค์˜ ํ›„๊ธฐ

4.8

5.0

kang

91% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

Rest api๊ธฐ๋ณธ์ž…๋ฌธ์œผ๋กœ ์•„์ฃผ ์ข‹๋„ค์š”.๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋”ฑ ์›ํ•˜๋˜ ๊ฐ•์˜ ์˜€์Šต๋‹ˆ๋‹ค. SpringBoot2.2์ด์ƒ์ผ๋•Œ Swagger๊ฐ€ ์ถ”๊ฐ€๋œ๊ฒฝ์šฐ HATEOS์‚ฌ์šฉ์—๋Ÿฌ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ €์ฒ˜๋Ÿผ ์‚ฝ์งˆํ•˜๋Š” ์‚ฌ๋žŒ์ด ์žˆ์„๊นŒ๋ด ... NoUniqueBeanDefinitionException๋ฐœ์ƒ ํ•ด๊ฒฐ:Swagger์„ค์ •ํŒŒ์ผํด๋ž˜์Šค์— ์ดํ•˜์ถ”๊ฐ€. @Primary @Bean public LinkDiscoverers discoverers() { List<LinkDiscoverer> plugins = new ArrayList<>(); plugins.add(new CollectionJsonLinkDiscoverer()); return new LinkDiscoverers(SimplePluginRegistry.create(plugins)); }

5.0

OMG

91% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

์ธ๊ฐ•์ž„์—๋„ ์‹œ๊ฐ„๋‹น 1๋งŒ์›์ด ๋„˜์–ด๊ฐ€๋Š” ์ธํ”„๋Ÿฐ ๋‚ด์˜ ๊ฐ•์˜๋“ค์ด ์ˆ˜๋‘๋ฃฉํ•˜๊ณ  ๋ถ€๋‹ด๋„ ๋งŽ์ด ๋˜๋Š” ๊ฐ€๊ฒฉ์ด ๋งŽ์€๋ฐ ๊ทธ๋Ÿฌํ•œ ๊ฐ•์˜๋“ค์— ๋น„ํ•ด ์ƒ๋‹นํžˆ ์ €๋ ดํ•œ ๊ฐ€๊ฒฉ์— ํ€„๋ฆฌํ‹ฐ ๋˜ํ•œ ๋น„์‹ผ ๊ฐ•์˜๋“ค๊ณผ ๋น„๊ตํ•˜์—ฌ๋„ ๋ถ€์กฑํ•จ์ด ์ „ํ˜€ ์—†๋Š” ๊ฐ•์˜๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๊ฐ•์˜๋„ ๊ธฐ๋Œ€ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค! ์ข‹์€ ๊ฐ•์˜ ๊ฐ์‚ฌํ•ด์š” :)

5.0

Olive

91% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

์™„๊ฐ•ํ–ˆ์Šต๋‹ˆ๋‹ค. ์Šคํ”„๋ง ๊ธฐ์ดˆ์ ์ธ ์ง€์‹๋งŒ ์žˆ๋‹ค๋ฉด ๋ถ€ํŠธ REST API ์ž…๋ฌธ ๊ฐ•์˜๋กœ ๋„ˆ๋ฌด ์ข‹์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค!! ํ›„์† ๊ฐ•์ขŒ ๋‚˜์˜ค๋ฉด ๊ผญ ๋ณด๋Ÿฌ ์˜ค๊ฒ ์Šต๋‹ˆ๋‹ค

์ˆ˜๊ฐ• ํ›„ ์ด๋Ÿฐ๊ฑธ ์–ป์„ ์ˆ˜ ์žˆ์–ด์š”

  • Spring Boot

  • REST API

  • RESTful services

  • JPA

  • OAS 3.0 (Swagger Specification)

์Šคํ”„๋ง ๋ถ€ํŠธ RESTful API ์ž…๋ฌธ์˜ ๋ฐ”์ด๋ธ”!

์ด๋„์› / Dowon Lee - Spring Boot (์Šคํ”„๋ง๋ถ€ํŠธ) RESTful Web API

๋ณธ ๊ฐ•์˜๋Š” Spring Boot์™€ Spring Cloud๋ฅผ ์ด์šฉํ•œ Microservice๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๊ณผ์ •์— ์žˆ์–ด์„œ 
RESTful ์„œ๋น„์Šค๋ฅผ ์„ค๊ณ„ํ•˜๊ณ , Spring Cloud API๋ฅผ ์ด์šฉํ•œ ๊ตฌํ˜„ ๋ฐ ์šด์˜์— ๊ด€ํ•ด ํ•™์Šตํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑํ•œ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.


๐Ÿ“ ๊ฐ•์˜ ์†Œ๊ฐœ

# ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค(Microservices)๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

"Microservices are a software development technique โ€”a variant of the service-oriented architecture (SOA) structural styleโ€” that arranges an application as a collection of loosely coupled services. In a microservices architecture, services are fine-grained and the protocols are lightweight." - wikipedia

2011๋…„ ๋ฒ ๋‹ˆ์Šค์—์„œ ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜ ์›Œํฌ์ˆ์ด ๊ฐœ์ตœ๋œ ์ดํ›„ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ผ๋Š” ์šฉ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์ถ•์— ์ „ํ†ต์ ์ธ ๋ชจ๋†€๋ฆฌ์Šค ๊ฐœ๋ฐœ ๋ฐฉ์‹ ๋Œ€์‹  ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ฐœ๋ฐœ ๋ฐฉ์‹์„ ๋„์ž…ํ•จ์œผ๋กœ์จ, ๊ฐœ๋ฐœ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์œ ์ง€/๋ณด์ˆ˜์— ์žˆ์–ด์„œ๋„ ๋น„์šฉ ์ ˆ๊ฐ ๋ฐ ํšจ์œจ์„ฑ ์ฆ๊ฐ€๊ฐ€ ์ด๋ฃจ์–ด์กŒ์œผ๋ฉฐ ๊ณ ๊ฐ์˜ ์š”๊ตฌ์‚ฌํ•ญ ๋˜ํ•œ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค์˜ ์ธ๊ธฐ์™€ ๋”๋ถˆ์–ด์„œ RESTful์ด๋ผ๋Š” ๊ฐœ๋ฐœ ๋ฐฉ์‹๋„ ๋งŽ์ด ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 

Microservice Architecture๋ž€ ๊ธฐ์กด ํ•˜๋‚˜์˜ ํฐ ๋‹จ์œ„๋กœ ๊ฐœ๋ฐœ/์šด์˜๋˜๋˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ˆ˜์‹ญ, ์ˆ˜๋ฐฑ, ๋งŽ๊ฒŒ๋Š” ์ˆ˜์ฒœ ๊ฐœ์˜ ์ž‘์€ ์„œ๋น„์Šค ๋‹จ์œ„๋กœ ์ชผ๊ฐœ์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœ/์šด์˜ํ•˜๋Š” ๋ฐฉ์‹์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ Microservice๋ฅผ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ฐ ์„œ๋น„์Šค๋ผ๋ฆฌ ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐœ๋ฐœ๋  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ, ๊ฐ ์„œ๋น„์Šค์— ์ตœ์ ํ™”๋œ ๊ฐœ๋ฐœ ์–ธ์–ด์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„ ํƒํ•  ์ˆ˜๋„ ์žˆ๋Š” Polyglot Programming(ํด๋ฆฌ๊ธ€๋ž ํ”„๋กœ๊ทธ๋ž˜๋ฐ)์˜ ์š”๊ฑด์„ ๊ฐ–์ถ”์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. 

์ด๋ ‡๊ฒŒ ์ด๊ธฐ์ข…(็•ฐๆฉŸ็จฎ)์œผ๋กœ ๊ฐœ๋ฐœ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ„์— ๋ฐ์ดํ„ฐ ํ†ต์‹ ์„ ์œ„ํ•ด์„œ ํ‘œ์ค€ํ™”๋œ HTTP ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜๋Š” RESTful ์„œ๋น„์Šค๋ฅผ ๋„๋ฆฌ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Spring Boot๋Š” ๋…๋ฆฝ ์šด์˜ ๊ฐ€๋Šฅํ•œ Spring ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‰ฝ๊ฒŒ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•ด์ฃผ๋Š” ๊ฐœ๋ฐœ ๋„๊ตฌ์ด์ž Spring Project์ž…๋‹ˆ๋‹ค. Spring Boot๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ”๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๋…๋ฆฝํ˜• Spring ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‰ฝ๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, Spring framework์™€ ๊ธฐํƒ€ Third-party ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ ์„ค์ • ์ž‘์—…์„ ์ตœ์†Œํ™” ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— ๋” ๋งŽ์€ ์‹œ๊ฐ„์„ ํˆฌ์žํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ Spring Boot์˜ Starter ์ปดํฌ๋„ŒํŠธ๋“ค์„ ์ด์šฉํ•˜๋ฉด, ์ƒ์šฉํ™”์— ํ•„์š”ํ•œ ํ†ต๊ณ„, ์ƒํƒœ ์ฒดํฌ, ์™ธ๋ถ€ ์„ค์ • ๋“ฑ์— ๊ด€ํ•œ ์ž‘์—…๋„ ์‰ฝ๊ฒŒ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

์šฐ๋ฆฌ์˜ ์ตœ์ข… ๋ชฉํ‘œ๋Š” Spring Boot์™€ Spring Cloud๋ฅผ ์ด์šฉํ•ด์„œ
๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜๋กœ ์„ค๊ณ„๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„
์„ค๊ณ„ํ•˜๊ณ , ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.


โœ๏ธ ์ˆ˜์—… ๊ณผ์ •

๐Ÿ’ก ๋ณธ ๊ณผ์ •์„ ํ†ตํ•ด Spring Boot์™€ Spring Cloud๋ฅผ ์ด์šฉํ•˜์—ฌ Microservice Architecure๋กœ ์›น ์„œ๋น„์Šค๋ฅผ ์„ค๊ณ„ํ•˜๊ณ , ๊ตฌํ˜„, ์šด์˜ ๊ด€ํ•œ ์ „๋ฐ˜์ ์ธ ๊ณผ์ •์„ ํ•™์Šตํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (๋กœ๋“œ๋งต ๋ณด๊ธฐ)

์ฒซ๋ฒˆ์งธ ๊ณผ์ • (ํ˜„์žฌ ๊ฐ•์˜)

REST API๋ฅผ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•ด Spring Boot๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋‹จ๊ณ„๋ถ€ํ„ฐ, REST API๋ฅผ ์„ค๊ณ„ํ•˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ณผ์ •์— ๋Œ€ํ•ด ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค.

๋‘๋ฒˆ์งธ ๊ณผ์ • (์ด์–ด์ง€๋Š” ๊ฐ•์˜)

Spring Boot์™€ Spring Cloud๋ฅผ ์ด์šฉํ•˜์—ฌ Microservice Architecture๋ฅผ ์„ค๊ณ„, ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“ข ์ˆ˜๊ฐ• ์ „ ํ™•์ธํ•ด์ฃผ์„ธ์š”

  • ๊ฐ•์˜์— ์‚ฌ์šฉ๋œ ๊ฐœ๋ฐœ ํˆด ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. 
    • Java 17 + IntelliJ IDEA + Postman 
    • Spring Boot 3.1.5(Spring Boot Security, Actuator, Starter, Spring Data JPA ๋“ฑ)
    • OpenAPI Specification 3.0  
    • Swagger UI 5.2.0
    • H2 2.1.214
  • ๊ฐ•์˜์— ์‚ฌ์šฉ๋œ ์‹ค์Šต ์ฝ”๋“œ ๋ฐ ๊ต์•ˆ(PDF)์€ Github์—์„œ ํ™•์ธํ•ด ๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜
์ถ”์ฒœ๋“œ๋ ค์š”

ํ•™์Šต ๋Œ€์ƒ์€
๋ˆ„๊ตฌ์ผ๊นŒ์š”?

  • Spring Boot๋ฅผ ์ด์šฉํ•ด์„œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๋ คํ•˜๋Š” ๋ถ„๋“ค

  • REST API ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๋ ค๋Š” ๋ถ„๋“ค

  • ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•˜๋ ค๋Š” ๋ถ„๋“ค

์„ ์ˆ˜ ์ง€์‹,
ํ•„์š”ํ• ๊นŒ์š”?

  • Java

  • Web Application

  • Spring framework์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์ง€์‹

์•ˆ๋…•ํ•˜์„ธ์š”
Dowon Lee์ž…๋‹ˆ๋‹ค.

30,257

๋ช…

์ˆ˜๊ฐ•์ƒ

1,679

๊ฐœ

์ˆ˜๊ฐ•ํ‰

1,373

๊ฐœ

๋‹ต๋ณ€

4.8

์ 

๊ฐ•์˜ ํ‰์ 

8

๊ฐœ

๊ฐ•์˜

์ €๋Š” IT ์—”์ง€๋‹ˆ์–ด์ž…๋‹ˆ๋‹ค. ์–ธ์  ๊ฐ€ ์ง์—…๋ž€์— "ํšŒ์‚ฌ์›?", "๊ฐœ๋ฐœ์ž?", "๊ฐ•์‚ฌ?" ์–ด๋–ค ๋‹จ์–ด๋ฅผ ์„ ํƒํ•ด์•ผ ํ•  ์ง€ ๊ณ ๋ฏผ์ด ๋˜์—ˆ๋˜ ๋•Œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ค๊ฐ€, IT ์—”์ง€๋‹ˆ์–ด๋ผ๋Š” ํ‘œํ˜„์ด ์ œ๊ฐ€ ์ž˜ ์–ด์šธ๋ฆฌ๋Š” ์ง์—…๋ช…์ด๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์–ด ์ง€๊ธˆ๊นŒ์ง€๋„ ์ง์—…๋ž€์—๋Š” "IT ์—”์ง€๋‹ˆ์–ด"๋ผ๊ณ  ์ ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ง์—…์ด๋ผ๋Š” ๊ฒƒ์€ ์ž์‹ ์˜ ์ผ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์ด๊ณ , ์ผ์ด๋ผ๋Š” ๊ฒƒ์€ ์žฌ๋ฏธ์žˆ๊ณ , ๋„์›€์ด ๋˜๋Š” ์ผ์ด๋ฉด ์ข‹๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฌ๋‚˜ ๋‹ค ์›ํ•˜๋Š”๋Œ€๋กœ ์ผ์„ ํ•˜๋ฉฐ ์‚ด์ˆ˜๋Š” ์—†์ง€๋งŒ, ์ €๋Š” ์ œ๊ฐ€ ํ•˜๋Š” ์žˆ๋Š” ์ด ์ผ์„ ์ข‹์•„ํ•˜๋Š” ์žˆ๊ณ , ์ž˜ํ•˜๊ณ  ์‹ถ์–ดํ•˜๋Š” ์‚ฌ๋žŒ์ž…๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋กœ์จ, ๊ฐ•์‚ฌ๋กœ์จ, ์ปจ์„คํ„ดํŠธ๋กœ์จ์˜ ์—ญํ• ์„ ํ•ด ์˜ค๋ฉด์„œ, ๋งค๋ฒˆ ์ƒˆ๋กญ๊ฒŒ ์ถœ์‹œ๋˜๊ณ  ๋ณ€ํ™”ํ•˜๋Š” IT ์‹ ๊ธฐ์ˆ ์„ ๋”ฐ๋ผ๊ฐ€๊ธฐ์— ๊ธ‰๊ธ‰ํ•˜์ง€๋งŒ, ๊ทธ๋ž˜๋„, ๋‚จ๋“ค๋ณด๋‹ค ์กฐ๊ธˆ์ด๋ผ๋„ ๋จผ์ € ์ ‘ํ•˜๊ณ , ์ „ํŒŒํ•˜๊ณ , ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์€ ์‚ฌ๋žŒ ์ค‘ ํ•œ๋ช…์ž…๋‹ˆ๋‹ค. 

์ตœ๊ทผ ๊ด€์‹ฌ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ถ„์•ผ๋Š” ์˜จ๋ผ์ธ ๊ต์œก ์ปจ์„คํŒ…์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ด€์‹ฌ์žˆ๋Š” ๊ธฐ์ˆ ์€ Cloud Native Architecture, Blockchain, Machine Learning, Kafka, Kuberbetes ๋“ฑ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ธฐ์ˆ ์€ ์‹ค์ œ๋กœ ๊ฐ•์˜๋„ ํ•˜๊ณ  ์žˆ๊ณ  ์—…๋ฌด์— ์ ์šฉํ•ด์„œ ์‚ฌ์šฉ๋„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ์›Œ๋‚™ ๋ฐฉ๋Œ€ํ•œ ์ฃผ์ œ์ด๋‹ค ๋ณด๋‹ˆ, ์•„์ง๊นŒ์ง€๋„ ๊ณ„์† ๊ณต๋ถ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋จธ๋ฆฌ์†์— ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์€ ์ง„์ •ํ•œ ์ง€์‹์ด ์•„๋‹ˆ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” ์ œ๊ฐ€ ๊ฐ€์ง„ ์ง€์‹๊ณผ ๊ฒฝํ—˜์„ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ™์„ ํ†ตํ•ด ๊ณต์œ ํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ , ์ƒˆ๋กœ์šด ๋ถ„์•ผ, ์ƒˆ๋กœ์šด ๊ธฐ์ˆ ์— ๊ณ„์† ๋„์ „ํ•˜๊ณ  ์žˆ๋Š” IT ์—”์ง€๋‹ˆ์–ด๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.  

 

 

  • ็พ) ์—”์ œ์ด์›์ปดํผ๋‹ˆ ๋Œ€ํ‘œ 

  • ็พ) ๋™๊ตญ๋Œ€ํ•™๊ต ๊ตญ์ œ์ •๋ณด๋Œ€ํ•™์› ์ •๋ณด๋ณดํ˜ธํ•™๊ณผ ๋Œ€์šฐ๊ต์ˆ˜

  • ๅ‰) JP Morgan Chase AMJ Tech consultant (์ผ๋ณธ)

  • ๅ‰) ์‚ผ์„ฑ SDS CMS ์‚ฌ์—…๋ณธ๋ถ€ ์ฑ…์ž„ ์—”์ง€๋‹ˆ์–ด

 

 

๋”๋ณด๊ธฐ

์ปค๋ฆฌํ˜๋Ÿผ

์ „์ฒด

52๊ฐœ โˆ™ (6์‹œ๊ฐ„ 57๋ถ„)

๊ฐ•์˜ ๊ฒŒ์‹œ์ผ: 
๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ์ผ: 

์ˆ˜๊ฐ•ํ‰

์ „์ฒด

466๊ฐœ

4.8

466๊ฐœ์˜ ์ˆ˜๊ฐ•ํ‰

  • anjwoc๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
    anjwoc

    ์ˆ˜๊ฐ•ํ‰ 5

    โˆ™

    ํ‰๊ท  ํ‰์  5.0

    5

    60% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

    ์„ค๋ช…์ด ๊ตฐ๋”๋”๊ธฐ๊ฐ€ ์—†์–ด์š” ์ •๋ง ๊น”๋”ํ•˜๊ณ  ๋ง์„ ์ž˜ํ•˜์‹ญ๋‹ˆ๋‹ค! Javascript๊ณ„์—ด์˜ ํ”„๋ ˆ์ž„์›Œํฌ๋งŒ ์“ฐ๋‹ค๊ฐ€ ๊ธ‰ํ•˜๊ฒŒ ๋ฉด์ ‘์ด ์žกํ˜€์„œ ์Šคํ”„๋ง์„ ๋น ๋ฅด๊ฒŒ ๋ณด๋Š”๋ฐ ๋„์›€์ด ๋์Šต๋‹ˆ๋‹ค ใ…Žใ…Ž ์ถ”๊ฐ€๋กœ ๊ฐ•์ขŒ๋ฅผ ๋‚ด์‹œ๋ฉด ๋˜ ๋ณด๋Ÿฌ ์˜ค๊ฒ ์Šต๋‹ˆ๋‹ค. ์„ค๋ช…์„ ๋„ˆ๋ฌด ์ž˜ํ•˜์…”์„œ ๋ˆ์ด ์•„๊น์ง€ ์•Š์„๊ฑฐ๊ฐ™๋„ค์š”

    • Dowon Lee
      ์ง€์‹๊ณต์œ ์ž

      ์•ˆ๋…•ํ•˜์„ธ์š”, ์ด๋„์›์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ ๊ฐ•์˜๋Š” ๊ณต์ง€ํ•œ๋ฐ๋กœ Spring Cloud์— ๋Œ€ํ•œ ๋‚ด์šฉ์œผ๋กœ ์—ฐ๊ฒฐ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ๋น ๋ฅธ์‹œ์ผ ๋‚ด์— ์—…๋ฐ์ดํŠธ ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

  • kang๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
    kang

    ์ˆ˜๊ฐ•ํ‰ 1

    โˆ™

    ํ‰๊ท  ํ‰์  5.0

    5

    91% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

    Rest api๊ธฐ๋ณธ์ž…๋ฌธ์œผ๋กœ ์•„์ฃผ ์ข‹๋„ค์š”.๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋”ฑ ์›ํ•˜๋˜ ๊ฐ•์˜ ์˜€์Šต๋‹ˆ๋‹ค. SpringBoot2.2์ด์ƒ์ผ๋•Œ Swagger๊ฐ€ ์ถ”๊ฐ€๋œ๊ฒฝ์šฐ HATEOS์‚ฌ์šฉ์—๋Ÿฌ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ €์ฒ˜๋Ÿผ ์‚ฝ์งˆํ•˜๋Š” ์‚ฌ๋žŒ์ด ์žˆ์„๊นŒ๋ด ... NoUniqueBeanDefinitionException๋ฐœ์ƒ ํ•ด๊ฒฐ:Swagger์„ค์ •ํŒŒ์ผํด๋ž˜์Šค์— ์ดํ•˜์ถ”๊ฐ€. @Primary @Bean public LinkDiscoverers discoverers() { List<LinkDiscoverer> plugins = new ArrayList<>(); plugins.add(new CollectionJsonLinkDiscoverer()); return new LinkDiscoverers(SimplePluginRegistry.create(plugins)); }

    • OMG๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
      OMG

      ์ˆ˜๊ฐ•ํ‰ 206

      โˆ™

      ํ‰๊ท  ํ‰์  5.0

      5

      91% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

      ์ธ๊ฐ•์ž„์—๋„ ์‹œ๊ฐ„๋‹น 1๋งŒ์›์ด ๋„˜์–ด๊ฐ€๋Š” ์ธํ”„๋Ÿฐ ๋‚ด์˜ ๊ฐ•์˜๋“ค์ด ์ˆ˜๋‘๋ฃฉํ•˜๊ณ  ๋ถ€๋‹ด๋„ ๋งŽ์ด ๋˜๋Š” ๊ฐ€๊ฒฉ์ด ๋งŽ์€๋ฐ ๊ทธ๋Ÿฌํ•œ ๊ฐ•์˜๋“ค์— ๋น„ํ•ด ์ƒ๋‹นํžˆ ์ €๋ ดํ•œ ๊ฐ€๊ฒฉ์— ํ€„๋ฆฌํ‹ฐ ๋˜ํ•œ ๋น„์‹ผ ๊ฐ•์˜๋“ค๊ณผ ๋น„๊ตํ•˜์—ฌ๋„ ๋ถ€์กฑํ•จ์ด ์ „ํ˜€ ์—†๋Š” ๊ฐ•์˜๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๊ฐ•์˜๋„ ๊ธฐ๋Œ€ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค! ์ข‹์€ ๊ฐ•์˜ ๊ฐ์‚ฌํ•ด์š” :)

      • Ppojin๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
        Ppojin

        ์ˆ˜๊ฐ•ํ‰ 1

        โˆ™

        ํ‰๊ท  ํ‰์  5.0

        5

        100% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

        ์ž˜๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ์Šคํ”„๋ง ๋ถ€ํŠธ์— ๋Œ€ํ•ด์„œ ์ž˜ ๋ชจ๋ฅด๊ณ  ์žˆ์—ˆ๋Š”๋ฐ, ์ด๋ ‡๊ฒŒ ๋งŽ์€ ๊ธฐ๋Šฅ๋“ค์ด ์žˆ๊ณ  ๊ทธ ๊ธฐ๋Šฅ๋“ค์„ ํ•œ๋ฒˆ์”ฉ ์จ๋ณด๋ฉด์„œ ์ด์ œ ์Šคํ”„๋ง ๋ถ€ํŠธ๊ฐ€ ๋ญ”์ง€ ์–ด๋–ป๊ฒŒ ์จ์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด์„œ ์กฐ๊ธˆ์€ ์•Œ๊ฒŒ๋œ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

        • Olive๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
          Olive

          ์ˆ˜๊ฐ•ํ‰ 3

          โˆ™

          ํ‰๊ท  ํ‰์  5.0

          5

          91% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

          ์™„๊ฐ•ํ–ˆ์Šต๋‹ˆ๋‹ค. ์Šคํ”„๋ง ๊ธฐ์ดˆ์ ์ธ ์ง€์‹๋งŒ ์žˆ๋‹ค๋ฉด ๋ถ€ํŠธ REST API ์ž…๋ฌธ ๊ฐ•์˜๋กœ ๋„ˆ๋ฌด ์ข‹์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค!! ํ›„์† ๊ฐ•์ขŒ ๋‚˜์˜ค๋ฉด ๊ผญ ๋ณด๋Ÿฌ ์˜ค๊ฒ ์Šต๋‹ˆ๋‹ค

          Dowon Lee๋‹˜์˜ ๋‹ค๋ฅธ ๊ฐ•์˜

          ์ง€์‹๊ณต์œ ์ž๋‹˜์˜ ๋‹ค๋ฅธ ๊ฐ•์˜๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”!

          ๋น„์Šทํ•œ ๊ฐ•์˜

          ๊ฐ™์€ ๋ถ„์•ผ์˜ ๋‹ค๋ฅธ ๊ฐ•์˜๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”!

          โ‚ฉ29,700