์Šคํ”„๋ง

Spring

Spring ํ•ต์‹ฌ์›๋ฆฌ-๊ธฐ๋ณธ [@Autowired/@Qualifier/@Primary]

์กฐํšŒ ๋Œ€์ƒ์˜ ๋นˆ์ด 2๊ฐœ ์ด์ƒ์ผ ๋•Œ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์ด 3๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. @Autowired ํ•„๋“œ ๋ช… ๋งค์นญ @Qualifier @Primary [ @Autowired ํ•„๋“œ ๋ช… ๋งค์นญ ] @Autowired๋Š” ์ฒ˜์Œ์— ํƒ€์ž… ๋งค์นญ์„ ์‹œ์ž‘ํ•œ๋‹ค. ํ•œ ํƒ€์ž…์— ์—ฌ๋Ÿฌ ๋นˆ์ด ์กด์žฌํ•  ๊ฒฝ์šฐ์—๋Š” ์ถฉ๋Œ์ด ์ผ์–ด๋‚˜์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค. ์ด๋•Œ๋Š” ํ•„๋“œ ๋ช…์„ ๋ณ€๊ฒฝํ•˜๋ฉด ๋œ๋‹ค. @Autowired private DiscountPolicy discountPolicy // DiscountPolicy ์— rateDiscountPolicy์™€ fixDiscountPolicy๊ฐ€ ์กด์žฌํ•จ ์ด๋Ÿฐ ์ฝ”๋“œ์—์„œ ์ •ํ™•ํ•œ ํ•„๋“œ๋ช…์œผ๋กœ ์ง€์ •ํ•ด์ค˜์•ผ ํ•œ๋‹ค. @Autowired private DiscountPolicy rateDiscountPolicy ์ด๋ ‡๊ฒŒ ์ฃผ์ž…ํ•ด์ฃผ๋ฉด rateDisc..

Spring

Spring ๊ธฐ๋ณธ [ ์‹ฑ๊ธ€ํ†ค/์Šคํ”„๋ง์ปจํ…Œ์ด๋„ˆ]

์›น์˜ ๊ฒฝ์šฐ์—๋Š” ๊ณ ๊ฐ์ด ์—ฌ๋Ÿฌ๋ช…์ด๊ธฐ ๋•Œ๋ฌธ์— ์š”์ฒญํ• ๋•Œ๋งˆ๋‹ค ๊ฐ์ฒด๋ฅผ ์ƒˆ๋กœ ์ƒ์„ฑํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๊ฐ€ ์ •๋ง์ •๋ง ์‹ฌํ•˜๋‹ค! ๊ทธ๋ž˜์„œ ํ•ด๊ฒฐ์„ ํ•ด์ค˜์•ผ ํ•œ๋‹ค. ๋ฐฉ๋ฒ•์—๋Š” ๋‘๊ฐ€์ง€๊ฐ€ ์กด์žฌํ•œ๋‹ค. 1. ์ง์ ‘ ์‹ฑ๊ธ€ํ†ค ์ƒ์„ฑ 2. ์‹ฑ๊ธ€ํ†ค ์ปจํ…Œ์ด๋„ˆ ์ด์šฉ [ ์ง์ ‘ ์‹ฑ๊ธ€ํ†ค ์ƒ์„ฑ ] ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์„ ์ ์šฉํ•˜๋ฉด ๊ณ ๊ฐ์˜ ์š”์ฒญ์ด ์˜ฌ ๋•Œ๋งˆ๋‹ค ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์ด๋ฏธ ๋งŒ๋“ค์–ด์ง„ ๊ฐ์ฒด๋ฅผ ๊ณต์œ ํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ง์ ‘ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ์—ฌ๋Ÿฌ ๋‹จ์ ์ด ์กด์žฌํ•œ๋‹ค. ์ž‘์„ฑํ•ด์•ผํ•  ์ฝ”๋“œ๊ฐ€ ๋งŽ์•„์ง„๋‹ค. DIP๋ฅผ ์œ„๋ฐ˜ํ•œ๋‹ค. ( ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ตฌ์ฒดํด๋ž˜์Šค๋ฅผ ์˜์กดํ•œ๋‹ค) private static final SingletonService instance = new SingletonService(); DIP๋ฅผ ์œ„๋ฐ˜ํ•˜๋ฉด OCP๋„ ์œ„๋ฐ˜ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋งŽ๋‹ค. ๋‚ด๋ถ€์†์„ฑ์„ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ์ดˆ๊ธฐํ™” ํ•˜๊ธฐ ์–ด๋ ต..

Spring

Spring ๊ธฐ๋ณธ [ํ• ์ธ์ •์ฑ… ๋ณ€๊ฒฝ/๊ฐ์ฒด ์ง€ํ–ฅ ์›๋ฆฌ ์ ์šฉ/DI/์Šคํ”„๋ง์ปจํ…Œ์ด๋„ˆ]

์ง€๊ธˆ๊นŒ์ง€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ ์„ค๋ช… ํšŒ์›๊ฐ€์ž…์„ ํ•˜๊ณ , ์กฐํšŒํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๋‹ค. ๋ฌผ๊ฑด์„ ๊ตฌ์ž…ํ•  ๋•Œ ํ• ์ธ ์ •์ฑ…์„ ๋งŒ๋“ค๊ณ  ์‹ถ์–ด์„œ ๊ณ ์ •๋œ ํ• ์ธ๊ธˆ์•ก์„ ํ• ์ธํ•ด์ฃผ๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๊ธฐ์—…์—์„œ ๊ณ ์ •๋œ ํ• ์ธ๊ธˆ์•ก์ด ์•„๋‹ˆ๋ผ ํผ์„ผํŠธ๋กœ ํ• ์ธํ•ด์ฃผ๊ณ  ์‹ถ๋‹ค๊ณ  ํ•˜๋ฉด ์ฝ”๋“œ๋ฅผ ๋ฐ”๊ฟ”์•ผํ•œ๋‹ค. package hello.core.discount; import hello.core.member.Grade; import hello.core.member.Member; public class RateDiscountPolicy implements DiscountPolicy { private int discountPercent = 10; @Override public int discount(Member member, int price) { if (membe..

Spring

Spring [ ํšŒ์› ๋“ฑ๋ก/์กฐํšŒ/ํšŒ์› ๊ด€๋ฆฌ ์˜ˆ์ œ/์Šคํ”„๋ง]

๊ทธ๋™์•ˆ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ํ† ๋Œ€๋กœ ํšŒ์›์„ ๋“ฑ๋กํ•˜๊ณ , ์กฐํšŒํ•˜๋Š” ์‹ค์Šต์„ ์˜ค๋Š˜ ํ–ˆ๋‹ค!!! ์‚ฌ์‹ค ์ž‘๋…„์— ์ „๊ณต์ˆ˜์—… ๋“ค์œผ๋ฉด์„œ ๋‹ค ํ–ˆ๋˜ ๊ณผ์ •์ธ๋ฐ ๊ทธ๋• ๋„ˆ๋ฌด ๋นจ๋ž์–ด์„œ ์•„์˜ˆ ๋”ฐ๋ผ๊ฐ€์ง€ ๋ชปํ–ˆ์—ˆ๋˜,,,, ๊ทธ๋Ÿผ ์ •๋ฆฌ ํฌ์ŠคํŒ… ์‹œ์ž‘ูฉฬ‹(หŠ•อˆ ๊‡ด •อˆห‹)ูˆ 1. HomeContoller ์ƒ์„ฑ package hello.hellospring.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class HomeController { @GetMapping("/") // ๋กœ์ปฌํ˜ธ์ŠคํŠธ์— ๋“ค์–ด์˜ค๋ฉด public String home(){ return "h..

Spring

Spring [ํšŒ์› ๊ด€๋ฆฌ / ๋ฐฑ์—”๋“œ]

์ด๋ฒˆ์— ๋ฐฐ์šด ๊ฑด ์ข€ ์–ด๋ ต๋‹ค...๊ทธ๋ž˜๋„ ์—ด์‹ฌํžˆ ๋“ค์–ด์•ผ๊ฒ ๋‹คเน‘๏ฝฅฬ‘โ—ก๏ฝฅฬ‘เน‘ ์•„์ง ๊ธฐ์ดˆ๊ณต๋ถ€ํ•˜๊ณ  ์žˆ๋Š”๋ฐ๋„ ์ž๋ฐ” ๊ณต๋ถ€์˜ ๋ถ€์กฑํ•จ์ด ํ™•์‹คํžˆ ๋Š๊ปด์ง„๋‹คใ… ใ…  ๋‚ด์ผ๋ถ€ํ„ฐ ๋‹ค์‹œ ์ž๋ฐ” ๊ณต๋ถ€๋ฅผ ํ•ด์•ผ๊ฒ ๋‹ค ๊ทธ๋™์•ˆ ์ž˜ ์ž‘๋™๋˜๋˜ intelliJ๊ฐ€ ๊ฐ‘์ž๊ธฐ side-by-side์—๋Ÿฌ๊ฐ€ ๋‚ฌ๋‹ค...visual c++ ๋‹ค์‹œ ๊น”๊ณ  ๊ทธ๋ž˜๋„ ์•ˆ๋ผ์„œ ์ธํ…”๋ฆฌ์ œ์ด ์ง€์šฐ๊ณ  ๋‹ค์‹œ ๊น”์•˜๋”๋‹ˆ ์•„์ฃผ ์ž˜ ์ž‘๋™ ๋๋‹ค...๋‹ค์‹  ์ด๋Ÿฐ ์ผ ๋งŒ๋“ค์ง€ ๋ง์•„๋ผ (๊ฆ°๊’ซ°) ์ด๋ฒˆ์— ๋ฐฐ์šด ๊ฑด ํšŒ์› ๊ด€๋ฆฌ ์˜ˆ์ œ์ด๋‹ค! ํšŒ์›๊ฐ€์ž…์„ ํ•˜๊ณ , ์ค‘๋ณต๋œ ์ด๋ฆ„์€ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๋„๋ก ๊ด€๋ฆฌํ•ด์•ผํ•œ๋‹ค! ์ปจํŠธ๋กค๋Ÿฌ : ์›น MVC์˜ ์ปจํŠธ๋กค๋Ÿฌ ์—ญํ•  ์„œ๋น„์Šค : ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๊ตฌํ˜„ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผ. ๋„๋ฉ”์ธ ๊ฐ์ฒด๋ฅผ DB์— ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌ ๋„๋ฉ”์ธ : ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ ๊ฐ์ฒด 1. ..

Spring

Spring ๊ธฐ์ดˆ๋‹ค์ง€๊ธฐ [์ •์ ์ปจํ…์ธ  / MVC / API]

์ €๋ฒˆ์— ์ด์–ด์„œ ์˜ค๋Š˜๋„ ๊ธฐ์ดˆ๋ฅผ ๋ฐฐ์› ๋‹ค! ์˜ค๋Š˜ ๋ฐฐ์šด ๋‚ด์šฉ์€ ์ •์ ์ปจํ…์ธ , MVC, api์— ๊ด€๋ จ๋œ ๋‚ด์šฉ์ด๋‹ค. ์•„์ฃผ ์Šคํ”„๋ง ๊ฑธ์Œ๋งˆ๋ฅผ ์ค€๋น„ํ•˜๋Š” ๊ฒƒ ๊ฐ™์€ ๊ธฐ๋ถ€๋‹ˆ๋‹ค ํ™งํŒ…(เน‘หƒฬตแด—ห‚ฬต)ูˆ โ™ก 1. ์ •์ ์ปจํ…์ธ  ์ •์ ์ปจํ…์ธ ๋Š” ๊ทธ๋ƒฅ ํŒŒ์ผ์„ ๊ทธ๋Œ€๋กœ ๋ณด์—ฌ์ฃผ๋Š” ๋ฐฉ์‹์ด๋‹ค. resources์— staticํŒŒ์ผ์— hello-static.html ํŒŒ์ผ์„ ๋งŒ๋“ค์—ˆ๋‹ค. ์ •์  ์ปจํ…์ธ  ์ž…๋‹ˆ๋‹ค. ์ด๊ฑธ ์›น๋ธŒ๋ผ์šฐ์ €์— ์‹คํ–‰์‹œ์ผœ๋ณด๋ฉด body๋ฌธ์— ์จ ์žˆ๋Š” ๋ฌธ์žฅ์ด ๊ทธ๋Œ€๋กœ ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค. ์‹คํ–‰๊ณผ์ • - ์›น๋ธŒ๋ผ์šฐ์ €์—์„œ localhlost:8080/hello-static.html ์ฃผ์†Œ๋ฅผ ํ†ฐ์บฃ ์„œ๋ฒ„์— ๋ณด๋‚ธ๋‹ค. - ํ†ฐ์บฃ ์„œ๋ฒ„๋Š” ์Šคํ”„๋ง์—๊ฒŒ ๋ณด๋‚ด๊ณ , ์Šคํ”„๋ง์—์„œ๋Š” hello-static ๊ด€๋ จ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๋จผ์ € ์ฐพ๊ณ  ์—†์œผ๋ฉด, resources์— ์žˆ๋Š” html์„ ์ฐพ๋Š”๋‹ค. (์ปจํŠธ๋กค๋Ÿฌ..

Spring

Spring ํ”„๋กœ์ ํŠธ ํ™˜๊ฒฝ์„ค์ • [ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ / ๋นŒ๋“œ ์‹คํ–‰]

๋‚ด๊ฐ€ ๋ฌด์—‡์„ ๊ฐœ๋ฐœํ• ์ง€ ๊ฒฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋จผ์ € ์—ฌ๋Ÿฌ๊ฐ€์ง€๋ฅผ ๊ณต๋ถ€ํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค! ( ํ•˜๋‚˜ ๊ณต๋ถ€ํ•˜๋‹ค๊ฐ€ ์ ์„ฑ์— ์•ˆ๋งž์œผ๋ฉด ๋‹ค๋ฅธ๊ฑฐ ๊ณต๋ถ€ํ•ด๋ด์•ผ์ง€!) ๊ณต๋ถ€ํ•˜๋ฉด์„œ ๋ง‰ํ˜”๋˜ ๊ฒƒ, ์˜ค๋Š˜ ๊ณต๋ถ€ํ•œ ๊ฒƒ์„ ๋ณต์Šตํ•˜๋Š” ์ฐจ์›์—์„œ ๋ธ”๋กœ๊ทธ๋ฅผ ์“ธ ๊ฒƒ์ด๋‹คโœฆโ€ฟโœฆ ์—ด์‹ฌํžˆ ์“ธ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ผ๋ฉฐ... ๊ทธ๋ž˜์„œ ์ฒ˜์Œ ๊ณต๋ถ€ํ•˜๊ธฐ๋กœ ํ•œ ๊ฑด spring! ๋‚ด๊ฐ€ ํ•œ๋™์•ˆ ๊ณต๋ถ€ํ•  ๊ฑฐ์˜ ๋ชจ๋“  ๊ฒƒ์€ ์ธํ”„๋Ÿฐ ๊ฐ•์˜๋ฅผ ๋“ค์œผ๋ฉด์„œ ๊ณต๋ถ€ํ•œ ๊ฒƒ์ด๋‹ค. ์•„์ง ์‹œ์ž‘์— ๋ถˆ๊ณผํ•˜์ง€๋งŒ ๊ฐ•์‚ฌ๋‹˜ ๋„ˆ๋ฌด ์ž˜ ๊ฐ€๋ฅด์น˜๋Š” ๊ฒƒ ๊ฐ™์•„ ๋งŒ์กฑ ์ค‘(เน‘หƒฬตแด—ห‚ฬต)ูˆ ์•„์ง ๋งŽ์ด ๋ฐฐ์šฐ์ง€ ์•Š์€ ์ž…์žฅ์—์„œ ์“ฐ๋ ค๋‹ˆ๊นŒ ๋ถ€์กฑํ•œ ๊ฒƒ์ด ๋งŽ์„ ๊ฒƒ ๊ฐ™๋‹คใ… ใ…  ๋‚˜์ค‘์— ๋ณธ๋‹ค๋ฉด '์ด๋•Œ ์ด๋Ÿฐ ๊ฒƒ๋„ ๋ชฐ๋ž๋‹ค๋‹ˆ! '๋ผ๊ณ  ์ƒ๊ฐํ•˜๋Š” ๋‚ ์ด ์˜ค๊ฒ ์ง€? ใ…Žใ…Ž ์ฝ”๋”ฉ์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ IntelliJ๋ผ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๊น”์•˜๋‹ค! ์ž๋ฐ”๋Š” ์ด๋ฏธ ๊น”๋ ค์žˆ์—ˆ์ง€๋งŒ, 8๋ฒ„์ „์ด์–ด์„œ 11๋ฒ„์ „์œผ๋กœ..

DAHLIA CHOI
'์Šคํ”„๋ง' ํƒœ๊ทธ์˜ ๊ธ€ ๋ชฉ๋ก