์ „์ฒด ๊ธ€ 67

[JAVA] ๋””์ž์ธ ํŒจํ„ด๋“ค ์ •๋ฆฌ

ํŒจํ„ด๋ช…์—ญํ•  ์„ค๋ช…Spring ์ ์šฉ ํฌ์ธํŠธ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์ธ์Šคํ„ด์Šค ํ•˜๋‚˜๋งŒ ์ƒ์„ฑํ•ด์„œ ์žฌ์‚ฌ์šฉ์Šคํ”„๋ง Bean ๊ธฐ๋ณธ ์‹ฑ๊ธ€ํ†ค ์Šค์ฝ”ํ”„๋ธŒ๋ฆฌ์ง€ ํŒจํ„ด๊ตฌํ˜„๋ถ€์™€ ์ถ”์ƒํ™”๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ๋…๋ฆฝ์ ์œผ๋กœ ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•จ์ถ”์ƒ ์ธํ„ฐํŽ˜์ด์Šค + ๊ตฌํ˜„์ฒด ๊ตฌ์กฐ (์ „๋žต, ํ…œํ”Œ๋ฆฟ์ฒ˜๋Ÿผ)์ „๋žต ํŒจํ„ด๋Ÿฐํƒ€์ž„์— ์•Œ๊ณ ๋ฆฌ์ฆ˜(์ „๋žต)์„ ๋ฐ”๊ฟ”์„œ ์œ ์—ฐํ•˜๊ฒŒ ์ฒ˜๋ฆฌ@Component, Map ์ฃผ์ž…ํ…œํ”Œ๋ฆฟ ๋ฉ”์„œ๋“œ์ฒ˜๋ฆฌ ์ˆœ์„œ๋ฅผ ๊ณ ์ •ํ•˜๊ณ , ๊ฐœ๋ณ„ ์ฒ˜๋ฆฌ๋งŒ ๊ตฌํ˜„์ถ”์ƒ ํด๋ž˜์Šค + final ๋ฉ”์„œ๋“œํŒฉํ† ๋ฆฌ ํŒจํ„ด๊ฐ์ฒด ์ƒ์„ฑ ์ฑ…์ž„ ๋ถ„๋ฆฌBeanFactory, ApplicationContext ๋“ฑํ”„๋ก์‹œ ํŒจํ„ด์‹คํ–‰ ์ „/ํ›„ ๋กœ์ง ์‚ฝ์ž… ๋˜๋Š” ์ ‘๊ทผ ์ œ์–ดAOP(@Aspect), ํŠธ๋žœ์žญ์…˜, ๋ณด์•ˆ

[JAVA] ๋””์ž์ธ ํŒจํ„ด - ํ”„๋ก์‹œ ํŒจํ„ด(Proxy)

ํ”„๋ก์‹œ ํŒจํ„ด(Proxy)์–ด๋–ค ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด, ๋Œ€๋ฆฌ ๊ฐ์ฒด(proxy)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํŒจํ„ดSpring AOP๋Š” ํ”„๋ก์‹œ ํŒจํ„ด ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•จ. ํ•ต์‹ฌ ๋กœ์ง ์ „ํ›„์— ๋ถ€๊ฐ€๊ธฐ๋Šฅ ์‚ฝ์ž… ๊ฐ€๋Šฅ// ์„œ๋น„์Šค ๋ฉ”์„œ๋“œ ์‹คํ–‰ ์ „ํ›„์— ๋กœ๊น… ์˜ˆ์ œ(AOP)@Aspect // ํ”„๋ก์‹œ ๊ฐ์ฒด๊ฐ€ ๋Œ€์ƒ ๊ฐ์ฒด์˜ ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ์‹ธ๋Š” ๊ตฌ์กฐ@Componentpublic class LoggingAspect { // ๋ชจ๋“  Service ํŒจํ‚ค์ง€์˜ ๋ฉ”์„œ๋“œ ์‹คํ–‰ ์ „ @Before("execution(* com.winbit.project1.service.*.*(..))") public void beforeLog(JoinPoint joinPoint) { System.out.println("[Before]" + joinPoint.getSignature..

[JAVA] ๋””์ž์ธ ํŒจํ„ด - ์ „๋žต ํŒจํ„ด (Strategy)

์ „๋žต ํŒจํ„ด (Strategy)์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋ถ„๋ฆฌํ•ด์„œ ์œ ์—ฐํ•˜๊ฒŒ ๊ต์ฒด ๊ฐ€๋Šฅ// ์ „๋žต ํŒจํ„ด// => ๋Ÿฐํƒ€์ž„ ์‹œ์ ์— ์•Œ๊ณ ๋ฆฌ์ฆ˜(์ „๋žต)์„ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์คŒ// => Spring์—์„œ๋Š” ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„์ฒด๋“ค์„ Bean์œผ๋กœ ๋“ฑ๋กํ•˜๊ณ  Map์œผ๋กœ ์ฃผ์ž…๋ฐ›์•„ ์œ ์—ฐํ•˜๊ฒŒ ์ฒ˜๋ฆฌ// ๊ฒฐ์ œ๋ฐฉ์‹ ์„ ํƒ ์˜ˆ์ œ// 1. ์ „๋žต ์ธํ„ฐํŽ˜์ด์Šค ์ •์˜public interface PaymentStrategy { void pay(int amount);}// 2. ์ „๋žต ๊ตฌํ˜„์ฒด๋“ค (@Component๋กœ Bean๋“ฑ๋ก)@Component("card") // key๊ฐ’์ด ๋œ๋‹ค (Map ์ฃผ์ž… ์‹œ)class CardPayment implements PaymentStrategy { public void pay(int amount) { System.out.p..

[JAVA] ๋””์ž์ธ ํŒจํ„ด - ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ ํŒจํ„ด (Factory Method)

ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ ํŒจํ„ด (Factory Method)๊ณตํ†ต ๋กœ์ง์„ ๋ถ€๋ชจ ํด๋ž˜์Šค์— ์ •์˜ํ•˜๊ณ , ๋ณ€ํ•˜๋Š” ๋ถ€๋ถ„์„ ์ž์‹ ํด๋ž˜์Šค์— ๊ตฌํ˜„// ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ ํŒจํ„ด// : ๊ฐ์ฒด ์ƒ์„ฑ์„ ์„œ๋ธŒํด๋ž˜์Šค์— ๋งก๊ธฐ๊ณ , ํด๋ผ์ด์–ธํŠธ ํƒ€์ž…๋งŒ ์ง€์ •public class FactoryMethod { public static void main(String[] args) { Notification noti = NotificationFactory.create("email"); noti.send("Hello, Factory!"); }}//์•Œ๋ฆผ(Notification) ์ธํ„ฐํŽ˜์ด์Šค => ํด๋ผ์ด์–ธํŠธ ํƒ€์ž…๋งŒ ์ง€์ •interface Notification { void send(String message); }class EmailNotification imp..

[JAVA] ๋””์ž์ธ ํŒจํ„ด - ๋ธŒ๋ฆฟ์ง€ ํŒจํ„ด(Bridge)

๋ธŒ๋ฆฟ์ง€ ํŒจํ„ด(Bridge Pattern)๊ธฐ๋Šฅ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ํด๋ž˜์Šค์™€ ๊ตฌํ˜„์„ ๋‹ด๋‹นํ•˜๋Š” ์ถ”์ƒ ํด๋ž˜์Šค๋กœ ๊ตฌ๋ณ„๋ธŒ๋ฆฌ์ง€ ํŒจํ„ด์€ ์ƒˆ๋กœ์šด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ •์˜ํ•˜์—ฌ ๊ธฐ์กด ํ”„๋กœ๊ทธ๋žจ์˜ ๋ณ€๊ฒฝ ์—†์ด ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Œ⇒ ์‚ฌ์šฉ ์˜ˆ์‹œ๊ธฐ์กด ์‹œ์Šคํ…œ์— ๋ถ€์ˆ˜์ ์ธ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ๋“ค์„ ์ง€์†์ ์œผ๋กœ ์ถ”๊ฐ€ํ•  ๋•Œ๋ถ€๋ชจ ์ถ”์ƒ ํด๋ž˜์Šค๊ฐ€ ๊ธฐ๋ณธ ๊ทœ์น™ ์„ธํŠธ๋ฅผ ์ •์˜ํ•˜๊ณ , ๊ตฌ์ฒด์ ์ธ ํด๋ž˜์Šค๊ฐ€ ์ถ”๊ฐ€ ๊ทœ์น™์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ๋‹ค์–‘ํ•œ UI API ๊ตฌํ˜„, ๊ทธ๋ž˜ํ”ฝ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋“ฑ⇒ ์žฅ์ ํด๋ž˜์Šค ๊ณ„์ธต์„ ๋ถ„๋ฆฌํ•  ๋–„ ์™„์ „ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฒฐํ•ฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํด๋ž˜์Šค์—์„œ ๊ตฌํ˜„๊ณผ ์ถ”์ƒ ๋ถ€๋ถ„ 2๊ฐœ์˜ ๊ณ„์ธต์œผ๋กœ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ๊ณ , ๋ถ„๋ฆฌ๋œ 2๊ฐœ์˜ ์ถ”์ƒ ๊ณ„์ธต๊ณผ ๊ตฌํ˜„ ๊ณ„์ธต์€ ๋…๋ฆฝ์ ์ธ ํ™•์žฅ์ด ๊ฐ€๋Šฅ๋Ÿฐํƒ€์ž„ ์‹œ์ ์— ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ง€ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค.๊ธฐ๋Šฅ์„ ๋…๋ฆฝ์ ์œผ๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ธฐ๋Šฅ์„ ..

[JAVA] ๋””์ž์ธ ํŒจํ„ด - ์‹ฑ๊ธ€ํ„ด ํŒจํ„ด(Singleton)

์ž๋ฐ” ๋Œ€ํ‘œ ์ฝ”๋”ฉ ํŒจํ„ด : ์„ค๊ณ„์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋””์ž์ธ ํŒจํ„ด์œผ๋กœ, ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ ๋†’์ž„⇒ ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด๋งŒ ์จ๋ดค์Œ.. ๋‹ค๋ฅธ ํŒจํ„ด ๊ณต๋ถ€ ํ•  ๊ฒƒ! Spring Bean ์ž์ฒด๊ฐ€ ๊ธฐ๋ณธ ์‹ฑ๊ธ€ํ†ค! ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด(Singleton Pattern)๊ฐ์ฒด๊ฐ€ ๋‹จ ํ•˜๋‚˜๋งŒ ์กด์žฌํ•˜๋„๋ก! (์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹œ์ž‘๋  ๋–„ ์–ด๋–ค ํด๋ž˜์Šค๊ฐ€ ์ตœ์ดˆ ํ•œ๋ฒˆ๋งŒ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น(static)ํ•˜๊ณ  ๊ทธ ๋ฉ”๋ชจ๋ฆฌ์— ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด)๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ๊ฐ™์€ ์„ค์ • ํŒŒ์ผ์—์„œ ๊ฐ์ฒด๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ ์ƒ์„ฑ๋œ๋‹ค๋ฉด ์„ค์ •๊ฐ’์ด ๋ณ€๊ฒฝ๋  ์œ„ํ—˜์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ, ์—ฌ๋Ÿฌ ์“ฐ๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ํ•ด๋‹น ์ธ์Šคํ„ด์Šค๋ฅผ ๊ณต์œ ํ•˜๋ฉฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ๋” ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์„ ์‚ฌ์šฉํ•จ!(but, ๋™์‹œ์„ฑ ๋ฌธ์ œ๋ฅผ ๊ณ ๋ คํ•ด์„œ ์„ค๊ณ„, ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค๋“ค ๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๊ฐ€ ๋†’์•„์ ธ ‘๊ฐœ๋ฐฉ-ํ์‡„ ์›์น™’ ์œ„๋ฐฐ)⇒ ์žฅ์  : ๋ฉ”..

[์˜ค๋ผํด ํŠœ๋‹ ์—์„ผ์…œ] 1. ์‹ค์Šตํ™˜๊ฒฝ ๊ตฌ์ถ•

https://cafe.naver.com/dbstudydapsqlp/5558 ์˜ค๋ผํด ํŠœ๋‹ ์—์„ผ์…œ ์‹ค์Šต ์Šคํฌ๋ฆฝํŠธ์•ˆ๋…•ํ•˜์„ธ์š”.์นผ์ฐฌ์š”์ •์ž…๋‹ˆ๋‹ค.์˜ค๋ผํด ํŠœ๋‹ ์—์„ผ์…œ์„ ๊ตฌ๋งคํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.์ฒจ๋ถ€ํŒŒ์ผ์€ ์‹ค์Šต์„ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ ์Šคํฌ๋ฆฝํŠธ ์ž…๋‹ˆ๋‹ค.์ฒจ๋ถ€ํŒŒ์ผ์€ ๋‘๊ฐ€์ง€ ์บ๋ฆญํ„ฐ ์…‹์œผ๋กœ ๊ตฌ์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.ํˆด์—...cafe.naver.com ์ฒจ๋ถ€ํŒŒ์ผ์˜ ์ƒ์„ฑ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „ ์˜ค๋ผํด ์„ค์น˜ ์ง„ํ–‰[๊ฐœ๋ฐœ ํ™˜๊ฒฝ]- Windows 10- Oracle 19C Enterprise Edition https://www.oracle.com/kr/database/technologies/oracle-database-software-downloads.html#db_free Database Software Downloads | Oracle ๋Œ€ํ•œ๋ฏผ๊ตญOra..

[์ƒˆ๋กœ์“ด ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์†”๋ฃจ์…˜] ์ œ 1๋ถ€ ์—‘์„ธ์Šค ์˜ํ–ฅ ์š”์†Œ์˜ ์ดํ•ด1

์ œ 1์žฅ ๋ฐ์ดํ„ฐ ์ €์žฅ๊ตฌ์กฐ์™€ ํŠน์ง•1.1 table, index ๋ถ„๋ฆฌํ˜•* ๊ด€๊ณ„ํ˜• DB ์ด์ „์—๋Š” Key์˜ ์—ญํ• ์ด ์ค‘์š” (ํ‚ค๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ด ๊ณง ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๋Š” ๊ฒƒ)key๋ฅผ ์—‘์„ธ์Šค ํ•  ๋•Œ, data์˜ ์œ„์น˜๋ฅผ ๋ฐ”๋กœ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด? ๊ตณ์ด ํ‚ค ์˜†์— ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ฌ์•„ ๋‘˜ ํ•„์š” Xkey์—์„œ ๋‹ค์‹œ data๋ฅผ ์ฐพ์•„๊ฐ€๋Š” ๋ฒˆ๊ฑฐ๋Ÿฌ์›€ ๊ฐ์ˆ˜ํ•ด์•ผ ํ•˜์ง€๋งŒ,์ผ๋‹จ ์ €์žฅ๋งŒ ํ•œ๋‹ค๋ฉด ์ €์žฅ์‹œ ๋ถ€๋‹ด์€ ๋งค์šฐ ๊ฐ์†Œ, ์ €์žฅ ์‹œ ์ธ๋ฑ์Šค์™€ ๋…๋ฆฝ์ ์ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ธ ์žฅ์ ์ด ๋จ!(์˜ˆ, ์•ผ๊ตฌ์žฅ์— ์•„๋ฌด ์ž๋ฆฌ์—๋ผ๋„ ์•‰์„ ์ˆ˜ ์žˆ์œผ๋ฉด ๋‹ค์ˆ˜ ์‚ฌ๋žŒ๋“ค์ด ์ž…์žฅํ•˜๋”๋ผ๋„ ๊ธฐ๋‹ค๋ ค์•ผํ•˜๋Š” ๋ถ€๋‹ด์€ ์—†์Œ)๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ํ…Œ์ด๋ธ”๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•œ ์ •๋ณด๋ฅผ ๋‹ด๋Š” ์ธ๋ฑ์Šค๊ฐ€ ๋ณ„๊ฐœ์˜ ๊ฐ์ฒด๋กœ ์กด์žฌํ•˜๋Š” ์ €์žฅ ํ˜•ํƒœ๋Œ€์šฉ๋Ÿ‰ ๊ด€๊ณ„ํ˜• DB์˜ ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๊ตฌ์กฐ 1.1.1 ๋ถ„๋ฆฌํ˜• ํ…Œ์ด๋ธ” ๊ตฌ์กฐ์ €์žฅ๋  data๊ฐ€ ๋“ค์–ด..

์ž๋ฐ” ๋ฒ„์ „ ์ •๋ฆฌ (8,11,17,21)

Java 82014๋…„ ์ถœ์‹œ, LTS ๋ฒ„์ „(~2030.12 ์ง€์›)๋Œ€๊ทœ๋ชจ ๋ฆด๋ฆฌ์ฆˆ, Lambda, Stream API ์ œ๊ณตOptional, ์ƒˆ๋กœ์šด ๋‚ ์งœ,์‹œ๊ฐ„ API ์ œ๊ณต (ex: LocalDateTime)Oracle์ด Java๋ฅผ ์ธ์ˆ˜ํ•œ ํ›„ ์ฒซ๋ฒˆ์งธ LTS ์ถœ์‹œ ๋ฒ„์ „ Java 112018๋…„ ์ถœ์‹œ, LTS ๋ฒ„์ „(~2032.01 ์ง€์›)String๊ณผ File ๊ธฐ๋Šฅ ํ–ฅ์ƒString: isBlank(), strip()    File: writeString(), readString()var ํ‚ค์›Œ๋“œ ์‚ฌ์šฉ ๊ฐ€๋ŠฅOpen JDK์™€ Oracle JDK๊ฐ€ ํ†ตํ•ฉ Java 172021๋…„ ์ถœ์‹œ, LTS ๋ฒ„์ „(~2029.09 ์ง€์›)Spring Boot 3.x.x ๋ฒ„์ „์€ JDK 17 ์ด์ƒ ๋ถ€ํ„ฐ ์ง€์›Switch์— ๋Œ€ํ•œ ํŒจํ„ด ๋งค์นญ (Preview..

AWS EC2 ์•„ํŒŒ์น˜ + ํ†ฐ์บฃ 10๋ฒ„์ „(JDK21) ์„ค์น˜

1. EC2 ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ  => [ AWS EC2 ์ƒ์„ฑ ].txt ์ฐธ๊ณ  2. ์›๊ฒฉ์ ‘์†  => [ AWS EC2 ์ธ์Šคํ„ด์Šค ์›๊ฒฉ(Remote) ์ ‘์† ].txt ์ฐธ๊ณ  3. ํŒจํ‚ค์ง€ ์—…๋ฐ์ดํŠธ sudo yum update -y 4. ์•„ํŒŒ์น˜ ์„ค์น˜ ๋ฐ ์„ค์ • sudo yum install -y httpd echo ITWILL > index.html && sudo mv index.html /var/www/html/ sudo systemctl start httpd sudo systemctl enable httpd => ํ”„๋กœ๊ทธ๋žจ(ํŒจํ‚ค์ง€)์€ ๋ฆฌ๋ˆ…์Šค๊ฐ€ ์žฌ์‹œ์ž‘๋˜๋ฉด ๋‹ค์‹œ ์ข…๋ฃŒ ์ƒํƒœ๋กœ ๋˜๋Œ์•„๊ฐ! => ๋ฆฌ๋ˆ…์Šค๊ฐ€ ์žฌ์‹œ์ž‘๋˜๋ฉด ์ž๋™์œผ๋กœ ์•„ํŒŒ์น˜ ์›น ์„œ๋น„์Šค๊ฐ€ ์‹œ์ž‘๋˜๋„๋ก ์„ค์ •! => ๋ฐ˜๋Œ€๋Š” systemctl disable httpd 5. ์›น ์ ‘..