[Java] ํผ์‚ฌ๋“œ ํŒจํ„ด
ยท
๋ฐฑ์—”๋“œ ๋ฐ๋ธŒ์ฝ”์Šค
ํผ์‚ฌ๋“œ ํŒจํ„ด? ํผ์‚ฌ๋“œ(Facade) : ๊ฑด๋ฌผ์˜ ์ถœ์ž…๊ตฌ๊ฐ€ ์žˆ๋Š” ์ •๋ฉด ๋ณต์žกํ•œ ์‹œ์Šคํ…œ์ด๋‚˜ ์„œ๋ธŒ์‹œ์Šคํ…œ์„ ๋‹จ์ˆœํ™”๋œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ์™ธ๋ถ€๋กœ ๋…ธ์ถœ์‹œํ‚ค๋Š” ํŒจํ„ด์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‹œ์Šคํ…œ์˜ ๋ณต์žก์„ฑ์„ ๋ชฐ๋ผ๋„ ๊ฐ„๋‹จํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ƒํ™œ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋Š” ํผ์‚ฌ๋“œ ํŒจํ„ด์˜ ์˜ˆ์‹œ ์ผ์ƒ์ ์ธ ์˜ˆ์ œ๋กœ๋Š” ์Šค๋งˆํŠธํฐ์˜ ์ „์› ๋ฒ„ํŠผ์„ ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šค๋งˆํŠธํฐ์˜ ๋‚ด๋ถ€์—๋Š” ์ˆ˜๋งŽ์€ ํ•˜๋“œ์›จ์–ด ๋ฐ ์†Œํ”„ํŠธ์›จ์–ด ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ณต์žกํ•˜๊ฒŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” ์ „์› ๋ฒ„ํŠผ ํ•˜๋‚˜๋งŒ ๋…ธ์ถœ๋˜์–ด ์žˆ๊ณ , ์ด ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์ „์ฒด ์‹œ์Šคํ…œ์ด ์ผœ์ง€๊ฑฐ๋‚˜ ๊บผ์ง‘๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ๋งŒ๋‚˜๊ฒŒ ๋˜๋Š” ํผ์‚ฌ๋“œ ํŒจํ„ด์ด ํ•„์š”ํ•œ ์ƒํ™ฉ ๋ณต์žกํ•œ ์‹œ์Šคํ…œ ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ„ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•  ๋•Œ. ๋‹ค๋ฅธ ์‹œ์Šคํ…œ๊ณผ์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ์บก์Šํ™”ํ•˜๋ ค๊ณ  ํ•  ๋•Œ..
[Java] ์–ด๋Œ‘ํ„ฐํŒจํ„ด์— ๊ด€ํ•œ ์˜ˆ์ œ
ยท
๋ฐฑ์—”๋“œ ๋ฐ๋ธŒ์ฝ”์Šค
์–ด๋Œ‘ํ„ฐ ํŒจํ„ด? ๊ธฐ์กด์˜ ํด๋ž˜์Šค๋‚˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋‹ค๋ฅธ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ตฌ์กฐ์ ์ธ ํŒจํ„ด์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒํ™ฉ์—์„œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๊ฐœ์˜ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ํ˜ธํ™˜๋˜์ง€ ์•Š์„ ๋•Œ ๊ธฐ์กด ํด๋ž˜์Šค๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ์ƒˆ๋กœ์šด ํด๋ž˜์Šค๋‚˜ ์ธํ„ฐํŽ˜์ด์Šค์™€ ํ†ตํ•ฉํ•  ๋•Œ ์–ด๋Œ‘ํ„ฐ ํŒจํ„ด์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค Target(๋Œ€์ƒ) ์ธํ„ฐํŽ˜์ด์Šค: ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‚ฌ์šฉํ•˜๋ ค๋Š” ์ธํ„ฐํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ ์ฝ”๋“œ๋Š” ์ด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด์— ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค. Adaptee(์ ์‘ ๋Œ€์ƒ) ํด๋ž˜์Šค ๋˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค: ๊ธฐ์กด์— ์‚ฌ์šฉํ•˜๋ ค๋Š” ํด๋ž˜์Šค ๋˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋กœ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ง์ ‘ ์‚ฌ์šฉํ•˜๊ธฐ ์–ด๋ ค์šด ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Adapter(์–ด๋Œ‘ํ„ฐ) ํด๋ž˜์Šค: Target ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ , Adaptee๋ฅผ ๊ฐ์‹ธ์„œ Target ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋”ฐ๋ฅด๋„๋ก ๋ณ€ํ™˜ํ•ฉ..
[Java] ๋””์ž์ธํŒจํ„ด๊ณผ ์•ˆํ‹ฐ ํŒจํ„ด
ยท
๋ฐฑ์—”๋“œ ๋ฐ๋ธŒ์ฝ”์Šค
๋””์ž์ธ ํŒจํ„ด์ด๋ž€? ์†Œํ”„ํŠธ์›จ์–ด ๋””์ž์ธ์—์„œ ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์„ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ˜•ํƒœ๋กœ ์ •๋ฆฌํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํŒจํ„ด๋“ค์€ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ํŠน์ •ํ•œ ๋””์ž์ธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์ผ๋ฐ˜์ ์ธ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ œ๊ณตํ•˜๋ฉฐ, ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ, ๊ฐ€๋…์„ฑ, ํ™•์žฅ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐ ๋„์›€์„ ์ค๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Singleton ํŒจํ„ด์€ ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค๋งŒ ์ƒ์„ฑํ•˜๊ณ  ์ด๋ฅผ ์—ฌ๋Ÿฌ ๊ณณ์—์„œ ๊ณต์œ ํ•˜๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ Java์—์„œ์˜ Singleton ํŒจํ„ด์˜ ๊ฐ„๋‹จํ•œ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค. public class Singleton { private static Singleton instance; private Singleton() { // ์ƒ์„ฑ์ž๋ฅผ private๋กœ ์„ ์–ธํ•˜์—ฌ ์™ธ๋ถ€์—์„œ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ์„ ์ œํ•œ } public static..
[Java] ๋„์„œ๊ด€๋ฆฌ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค๋ฉด์„œ ๋ฐฐ์šด๊ฒƒ๋“ค - Enum, Builder ๋””์ž์ธํŒจํ„ด
ยท
๋ฐฑ์—”๋“œ ๋ฐ๋ธŒ์ฝ”์Šค
https://github.com/prgrms-be-devcourse/java-library-management/pull/34 [5๊ธฐ - ๋ฐ•์ฃผํ•œ] 1~2์ฃผ์ฐจ ๊ณผ์ œ: ๋„์„œ ๊ด€๋ฆฌ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ œ์ถœํ•ฉ๋‹ˆ๋‹ค. by ParkJuhan94 · Pull Request #34 · prg ์•ˆ๋…•ํ•˜์„ธ์š” ๋„์ฐŒ, ๋ฌด์†ก ๋ฉ˜ํ† ๋‹˜! ์ด๋ฒˆ ๊ณผ์ œ๋ฅผ ํ•˜๋ฉด์„œ ๋งŽ์€๊ฑธ ๋ฐฐ์šด๊ฒƒ ๊ฐ™์•„์š”. ์ถœ๋ ฅ๊ณผ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด์„œ ์–ด๋Š์ •๋„ test ํ•˜๋ฉด์„œ ์ง„ํ–‰์„ ํ–ˆ๋Š”๋ฐ, ๊ณ„์†๋œ ๋ฒ„๊ทธ์— ํ…Œ์ŠคํŠธ์ฝ”๋“œ๊ฐ€ ๊ผญ ํ•„์š”ํ•œ ๊ฒƒ ๊ฐ™๊ธด ํ–ˆ์Šต๋‹ˆ๋‹ค. github.com Java Enum ํ™œ์šฉ๊ธฐ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ• ๋•Œ Enum์„ ํ†ตํ•ด ์–ป๋Š” ๊ธฐ๋ณธ์ ์ธ ์žฅ์ ๋“ค์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด๊ณผ ๋น„๊ตํ•ด, IDE์˜ ์ ๊ทน์ ์ธ ์ง€์›์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ—ˆ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐ’๋“ค์„ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฆฌํŒฉํ† ๋ง์‹œ ๋ณ€๊ฒฝ ๋ฒ”์œ„๊ฐ€ ..
[Java] final ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ๊ฒฝ์šฐ - ์˜ˆ์ œ์™€ ํ•จ๊ป˜ ์ดํ•ดํ•˜๊ธฐ
ยท
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด/Java
final ํ‚ค์›Œ๋“œ๋Š” ์ฝ”๋“œ์˜ ์•ˆ์ •์„ฑ์„ ๋†’์ด๊ณ  ์˜๋„๋ฅผ ๋ช…ํ™•ํžˆ ํ‘œํ˜„ํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ฃผ๋ฉฐ, ์ƒ์ˆ˜, ๋ถˆ๋ณ€ ๊ฐ์ฒด, ๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ๋ฐฉ์ง€ ๋“ฑ ๋‹ค์–‘ํ•œ ์ƒํ™ฉ์—์„œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ฐœ์š” final ์ด๋ผ๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ๋Š” ๋‹จ์ˆœํžˆ ๋ณ€์ˆ˜์— ๋ถ™์—ฌ์„œ ์ƒ์ˆ˜๋กœ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. final ์„ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ ์œ ์šฉํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋” ์žˆ๊ธฐ์— ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ ์•Œ์•„๋ณด๊ณ , ์ ๊ทน ์‚ฌ์šฉํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜์—์„œ final ํ‚ค์›Œ๋“œ์˜ ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์˜ˆ์ œ์™€ ํ•จ๊ป˜ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. final ๋ณ€์ˆ˜ final ๋ณ€์ˆ˜๋Š” ํ•œ ๋ฒˆ ์ดˆ๊ธฐํ™”๋˜๋ฉด ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์ƒ์ˆ˜(constant)๋กœ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜์ง€ ๋ง์•„์•ผ ํ•  ๊ฒฝ์šฐ์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. public class FinalVariableExample { public static vo..
[Java] SOLID๋ž€? (2) - ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ 5๊ฐ€์ง€ ๊ธฐ๋ณธ ์›์น™
ยท
๋ฐฑ์—”๋“œ ๋ฐ๋ธŒ์ฝ”์Šค
https://giken.tistory.com/entry/Java-SOLID [Java] SOLID๋ž€? (1) - ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ 5๊ฐ€์ง€ ๊ธฐ๋ณธ ์›์น™ SOLID๋ž€? ๋กœ๋ฒ„ํŠธ ๋งˆํ‹ด์ด 2000๋…„๋Œ€ ์ดˆ๋ฐ˜์— ์ด๋ฆ„๋ถ™์ธ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ/์„ค๊ณ„์˜ 5๊ฐ€์ง€ ๊ธฐ๋ณธ ์›์น™์˜ ์•ž๊ธ€์ž๋ฅผ ๋”ด ์•ฝ์–ด SOLID ๊ฐ์ฒด์ง€ํ–ฅ์˜ 4๋Œ€ ์›์น™ - ์บก์Šํ™”, ์ƒ์†, ์ถ”์ƒํ™”, ๋‹คํ˜•์„ฑ ๋‹คํ˜•์„ฑ - ๋˜‘๊ฐ™์€ ํด giken.tistory.com ์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ ์›์น™ (Interface segregation principle, ISP) ํด๋ผ์ด์–ธํŠธ๋ณ„๋กœ ์„ธ๋ถ„ํ™”๋œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค์–ด์•ผํ•œ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ถ„๋ฆฌํ•œ๋‹ค๋Š” ์ ์—์„œ ์•ž์„œ ์‚ดํŽด๋ณด์•˜๋˜ ๋‹จ์ผ์ฑ…์ž„์›์น™๊ณผ ๋™์ผํ•˜๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ถ„๋ฆฌํ•˜๋Š” ๊ด€์  ์ž์ฒด๊ฐ€ ๋‹ค๋ฅด๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ ์›์น™์ด ๊นจ์ง„ ์ƒํ™ฉ public interfac..
[Java] SOLID๋ž€? (1) - ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ 5๊ฐ€์ง€ ๊ธฐ๋ณธ ์›์น™
ยท
๋ฐฑ์—”๋“œ ๋ฐ๋ธŒ์ฝ”์Šค
SOLID๋ž€? ๋กœ๋ฒ„ํŠธ ๋งˆํ‹ด์ด 2000๋…„๋Œ€ ์ดˆ๋ฐ˜์— ์ด๋ฆ„๋ถ™์ธ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ/์„ค๊ณ„์˜ 5๊ฐ€์ง€ ๊ธฐ๋ณธ ์›์น™์˜ ์•ž๊ธ€์ž๋ฅผ ๋”ด ์•ฝ์–ด SOLID ๊ฐ์ฒด์ง€ํ–ฅ์˜ 4๋Œ€ ์›์น™ - ์บก์Šํ™”, ์ƒ์†, ์ถ”์ƒํ™”, ๋‹คํ˜•์„ฑ ๋‹คํ˜•์„ฑ - ๋˜‘๊ฐ™์€ ํด๋ผ์ด์–ธํŠธ ์ฝ”๋“œ๋กœ ์•ˆ์— ๋“ค์–ด์žˆ๋Š” ์กด์žฌ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๋™์ž‘์ด ์ˆ˜ํ–‰๋˜๋Š” ๊ฒƒ ๋‹จ์ผ ์ฑ…์ž„ ์›์น™ (Single responsibility principle, SRP) ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๋Š” ํ•˜๋‚˜์˜ ์ฑ…์ž„๋งŒ์„ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค. ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ฑ…์ž„์„ ๊ฐ€์ง„๋‹ค๋ฉด, ๊ทธ ํด๋ž˜์Šค์˜ ์ฝ”๋“œ๊ฐ€ ๋ณ€๊ฒฝ๋˜์–ด์•ผํ•  ์ด์œ ๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ๊ฐ€ ์ƒ๊ธด ๊ฒƒ์ด๋‹ค. ๋‹จ์ผ ์ฑ…์ž„ ์›์น™์„ ์ง€ํ‚ค๋Š” ์ฝ”๋“œ๋Š” ๊ฐ๊ฐ์˜ ํด๋ž˜์Šค๊ฐ€ ์‘์ง‘๋ ฅ์ด ๋†’๊ธฐ ๋•Œ๋ฌธ์—, ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋†’์•„์ง€๊ณ , ์บก์Šํ™”๋ฅผ ํ†ตํ•ด ํ•œ ํด๋ž˜์Šค์˜ ๋ณ€๊ฒฝ์ด ๋‹ค๋ฅธ ํด๋ž˜์Šค์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋„๋ก ๋งŒ๋“ ๋‹ค. ๊ฐœ๋ฐฉ-ํ์‡„ ์›์น™ ..
[Java] ์˜์กด์„ฑ์„ ์ฃผ์ž…ํ•ด์ฃผ๋Š” ์ฃผ์ฒด - jar, @Profile, @Order
ยท
๋ฐฑ์—”๋“œ ๋ฐ๋ธŒ์ฝ”์Šค
์˜์กด? ์˜์กด์„ฑ? ์˜์กด, ์˜์กด์„ฑ -> Dependency ์˜์กด(์„ฑ) ์ฃผ์ž… -> Dependency Injection ์˜์กด(๊ด€๊ณ„) ์—ญ์ „ -> Dependency Inversion ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ํ•ด์ฃผ๋Š” ์ผ -> ์Šคํ”„๋ง ๋นˆ์—์„œ @Component ๋“ค์„ ๊ฐ–๊ณ ์žˆ์œผ๋ฉฐ, ์ปดํฌ๋„ŒํŠธ์˜ ์ƒ์„ฑ์ž์—์„œ ์˜์กด์„ฑ ์ฃผ์ž…์„ ํ•ด์ค€๋‹ค. -> ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ๋Š” ๋ฐ‘์—์„œ ์„ค๋ช…ํ•œ๋‹ค. ์‹คํ–‰ ์‹œ์ ์— ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ ๋นˆ์„ ์ฃผ์ž…์‹œ์ผœ์ค„๊นŒ? @SpringBootApplication public class ChangeRepositoryMain { public static void main(String[] args) { SpringApplication.run(ChangeRepositoryMain.class, args); } } @RestController pu..