MapleStory Cookie With Halo

๐Ÿƒ Spring 46

[Spring]๋ฉ”์‹œ์ง€ ์†Œ์Šค ์„ค์ •

ํ™˜๊ฒฝ์„ค์ • ์Šคํ”„๋ง์€ ๊ธฐ๋ณธ์ ์ธ ๋ฉ”์‹œ์ง€ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.โ†’ ์ธํ„ฐํŽ˜์ด์Šค MessageSource ์˜ ๊ตฌํ˜„์ฒด์ธ ResourceBundleMessageSource๋ฅผ ์Šคํ”„๋ง ๋นˆ์œผ๋กœ ๋“ฑ๋กํ•˜๋ฉด๋œ๋‹ค. ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌcode@Beanpublic MessageSource messageSource() { ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource(); messageSource.setBasenames("messages", "errors"); messageSource.setDefaultEncoding("utf-8"); return messageSource;} @SpringBootApplication์ด๋‚˜  @ComponantScan์ด..

๐Ÿƒ Spring 2025.03.12

[SpringMVC]์‘๋‹ต

ํŒŒ๋ผ๋ฏธํ„ฐ  @ModelAttribute  :๊ฐ™์€ ๊ธฐ๋Šฅ์„ ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ตœ๋Œ€ํ•œ ๋‹จ์ˆœํ™”ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋ณ€ํ•œ๋‹ค.@ModelAttribute๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ @ModelAttribute  ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ item ๊ฐ์ฒด๋ฅผ ๋ฐ›๋Š”๋‹ค.์‚ฌ์‹ค ๊ฐ์ฒด์ด๋ฆ„์ด ๊ฐ™์œผ๋ฉด ๊ตณ์ด ("Item")์œผ๋กœ ์ ์ง€ ์•Š์•„๋„ ๋œ๋‹ค.์Šคํ”„๋ง์€ ์ž์ฃผ์“ฐ๋Š” ๊ธฐ๋Šฅ์ด๊ธฐ์— @ModelAttribute๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ณ ์žˆ๋‹ค.๋“ฑ๋ก ํ›„ PRGํŒจํ„ด์„ ์‚ฌ์šฉํ•ด  redirect ํ•ด์•ผ๋งŒ ์˜ค๋ฅ˜๋ฅผ ๋ง‰์„ ์ˆ˜ ์žˆ๋‹ค.redirect ์‹œ,  RedirectAttributes ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€/์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.์ „์—ญ๋ณ€์ˆ˜  @ModelAttribute code์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์–ด๋–ค ๋ฉ”์„œ๋“œ์—๋“  Model์— regions์ด๋ž€ ์ด๋ฆ„์œผ๋กœ ์œ„ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ด๊ธฐ๊ฒŒ ๋œ๋‹ค.dใ…‡ใ…‡ ..

[SpringMVC]์š”์ฒญ Mapping ํ™œ์šฉ๋ฒ•

๋งคํ•‘์‹œ { } ๋กœ ๋ฌถ์–ด์„œ URI์ฃผ์†Œ๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค.๐ŸŒž ๊ฒฝ๋กœ ๋ณ€์ˆ˜  @PathVariable @****Mapping("/{param๋ช…}")    ์ œํ•œ์ž ReturnType ๋ฉ”์„œ๋“œ๋ช…(@PathVariable ("param๋ช…") Type ๋ณ€์ˆ˜๋ช…) {codeํ™”๋ฉด์—์„œ ๋„˜์–ด์˜ค๋Š” param๋ช…์„ ์ด์šฉํ•ด ์ฃผ์†Œ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.์‚ฌ์šฉ์˜ˆ์‹œ/mapping/{userId}  โ†’  /mapping/nueylog ๋กœ ์‚ฌ์šฉ๋œ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.๐ŸŒž ์ง€์—ญ๋ณ€์ˆ˜๋ช…์„ param๋ช…๊ณผ ๋™์ผํ•˜๊ฒŒ ๋งž์ถ”๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋” ๊ฐ„์†Œํ™”ํ•ด์„œ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค.๐ŸŒž ๋‹ค์ค‘ ์‚ฌ์šฉ๋ฒ•ํŠน์ • ํ—ค๋”๋กœ ์ถ”๊ฐ€ ๋งคํ•‘@GetMapping(value = "/mapping-header", headers = "mode=debug") code์‚ฌ์šฉ์˜ˆ์‹œ : ํ—ค๋”์— ํŠน์ •๊ฐ’์„ ์ถ”๊ฐ€ ํ›„ U..

[SpringMVC]์Šคํ”„๋งMVC ๊ตฌ์กฐ with์‚ฌ์šฉ์˜ˆ์‹œ

@Controller ์Šคํ”„๋ง ๋นˆ์œผ๋กœ ๋“ฑ๋กํ•ด์ค€๋‹ค. ์ด๋•Œ ์ปจํŠธ๋กค๋Ÿฌ์˜ ์—ญํ• ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ค€๋‹ค.์ปจํŠธ๋กค๋Ÿฌ๋กœ์„œ  @RequestMapping("URI์ฃผ์†Œ") ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.๊ฒฐ๊ณผ๋งคํ•‘๋ช…์œผ๋กœ ์ฐพ์•„์˜ค๋Š” ๊ฑฐ๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”์„œ๋“œ๋ช…๋งŒ ๋‹ค๋ฅด๋ฉด ์ด๋ ‡๊ฒŒ ํ•œ๊ตฐ๋ฐ๋กœ ๋ชฐ์•„๋„ฃ์„ ์ˆ˜๋„ ์žˆ๋‹ค.โ†’ ์—ฐ๊ด€๋œ ๊ธฐ๋Šฅ๋งŒ ๋ฌถ์–ด์„œ..๋งคํ•‘๋ช…์ด ๋งŽ์ด ์ค‘๋ณต๋๋Š”๋ฐ ํด๋ž˜์Šค ์œ„์—  @RequestMapping("URI์ฃผ์†Œ") ์œ„์— ํด๋ž˜์Šค ๋ ˆ๋ฒจ์— ์•ž๋‹จ ๊ฒฝ๋กœ ๋ฏธ๋ฆฌ ์ง€์ •ํ•ด ๊ฐ„์†Œํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.์Šคํ”„๋ง์˜  Model  model.addAttribute("์ง€์ •์ด๋ฆ„", ๋ฐ์ดํ„ฐ); โ†’ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•  ๋•Œ RequestHttpResponse์— ๋‹ด์ง€ ์•Š์•„๋„ ์Šคํ”„๋ง์ด ์ œ๊ณตํ•˜๋Š” Model์— ๋‹ด์œผ๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์ •ํ•œ ์ด๋ฆ„์œผ๋กœ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค. return "ํ™”๋ฉด๋ช…"; โ†’  ์Šคํ”„๋ง์€..

[SpringMVC]์Šคํ”„๋งMVC ํ™˜๊ฒฝ๊ตฌ์กฐ

DispatcherServlet  ์Šคํ”„๋ง์˜ ํ•ต์‹ฌ.ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ ์—ญํ• .2025.02.28 - [โ˜• JAVA/โ˜• Library & Pattern] - [JAVA]HttpServlet ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ ๋„์ž…ํ•ด๋ณด๊ธฐ Http Servlet์„ ์ƒ์†๋ฐ›์•„ ๋งŒ๋“ค์–ด์กŒ๋‹ค.๋ชจ๋“  ๊ฒฝ๋กœ (urlPatterns="/")์— ๋Œ€ํ•ด์„œ ๋งคํ•‘ํ•œ๋‹ค.โ€ป ์ฐธ๊ณ  : ๋” ์ž์„ธํ•œ ๊ฒฝ๋กœ๊ฐ€ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’๋‹ค.doDispatch() ๊ฐ€ ํ•ต์‹ฌ ์ฝ”๋“œ์ด๋‹ค.์–ด๋Œ‘ํ„ฐ ํŒจํ„ด์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.2025.03.01 - [โ˜• JAVA/โ˜• Library & Pattern] - [JAVA]์–ด๋Œ‘ํ„ฐ ํŒจํ„ด์„ ๋„์ž…ํ•ด ์œ ์—ฐํ•œ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๋งŒ๋“ค์–ด๋ณด์ž ํ•ธ๋“ค๋Ÿฌ๋ฅผ ํ†ตํ•ด ์–ด๋Œ‘ํ„ฐ๋ฅผ ์กฐํšŒํ•˜๊ณ , ์–ด๋…ธํ…Œ์ด์…˜์„ ์ด์šฉํ•ด ๋‹ค์–‘ํ•œ ๋งคํ•‘์„ ์žฌ๊ณตํ•œ๋‹ค.๐Ÿ’ก ์Šคํ”„๋ง MVC์˜ ํฐ ๊ฐ•์ DispatcherServlet ์ฝ”๋“œ์˜ ..

[SpringBoot][Gradle]Lombok ์ถ”๊ฐ€

Lobok ์ถ”๊ฐ€/์‚ฌ์šฉ build.gradle๋”๋ณด๊ธฐconfigurations { compileOnly { extendsFrom annotationProcessor }}dependencies { compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testCompileOnly 'org.projectlombok:lombok' testAnnotationProcessor 'org.projectlombok:lombok'}์ถ”๊ฐ€๋œ ๊ฒŒ ํ™•์ธ๋œ๋‹ค.vscode ๋กฌ๋ณต extention ์ถ”๊ฐ€settings์—์„œ Annotation Processing์„ ์ผœ์ค€๋‹ค.์‚ฌ์šฉ๋ฒ• @Getter  ์™€  @ Setter  ๋ฅผ ์ด์šฉํ•ด ..

[Spring]๋‹ค์–‘ํ•œ ์˜์กด๊ด€๊ณ„ ์ฃผ์ž… ๋ฐฉ๋ฒ• @Autowired

๋‹ค์–‘ํ•œ ์˜์กด๊ด€๊ณ„ ์ฃผ์ž… ์ƒ์„ฑ์ž ์ฃผ์ž…code ์ƒ์„ฑ์ž ํ˜ธ์ถœ์‹œ์ ์— ๋”ฑ 1๋ฒˆ๋งŒ ํ˜ธ์ถœ๋˜๋Š” ๊ฒƒ์ด ๋ณด์žฅ๋œ๋‹ค.๋ถˆ๋ณ€, ํ•„์ˆ˜ ์˜์กด๊ด€๊ณ„์— ์‚ฌ์šฉ.์Šคํ”„๋ง ๋นˆ์€ ์ƒ์„ฑ์ž๊ฐ€ 1๊ฐœ์ผ ๊ฒฝ์šฐ์—๋Š”, @Autowired๋ฅผ ์ƒ๋žตํ•ด๋„ ์ž๋™ ์ฃผ์ž…๋œ๋‹ค.์ˆ˜์ •์ž(setter ์ฃผ์ž…)codeโ€ป ์ „์—ญ๋ณ€์ˆ˜์— final์„ ์‚ญ์ œํ–‡๋‹ค.setter ํ•„๋“œ๋ฅผ ์ด์šฉํ•ด ์ƒ์„ฑ์ž๋ฅผ ์ฃผ์ž…ํ•œ๋‹ค.์„ ํƒ, ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ์˜์กด๊ด€๊ณ„์— ์ด์šฉ.(์‹ค์ œ๋กœ๋Š” ๊ฑฐ์˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ)์ž๋ฐ”๋นˆ ํ”„๋กœํผํ‹ฐ ๊ทœ์•ฝ์˜ ์ˆ˜์ •์ž ๋ฉ”์„œ๋“œ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.ํ•„๋“œ ์ฃผ์ž…codeํ•„๋“œ์— ๋ฐ”๋กœ ์˜์กด์„ฑ์„ ์ฃผ์ž…ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.์ฝ”๋“œ๊ฐ€ ๊ฐ„๊ฒฐํ•˜์—ฌ ์ด์ „์—๋Š” ๋งŽ์ด ์ผ์œผ๋‚˜, ์™ธ๋ถ€์—์„œ ๋ณ€๊ฒฝ์ด ๋ถˆ๊ฐ€๋Šฅํ•ด์„œ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์–ด๋ ต๋‹ค.๋”ฐ๋ผ์„œ ๋น„๊ถŒ์žฅ๋œ๋‹ค.(ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ๋“ฑ์—์„œ๋Š” ์‚ฌ์šฉํ• ๋งŒํ•˜๋‹ค)์ผ๋ฐ˜ ๋ฉ”์„œ๋“œ ์ฃผ์ž…code์ผ๋ฐ˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด์„œ ์ฃผ์ž… ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค...

๐Ÿƒ Spring 2025.02.26

[SpringBoot]์ปดํฌ๋„ŒํŠธ ํƒ์ƒ‰ ์œ„์น˜ ์ง€์ •์™€ ๊ธฐ๋ณธ ์Šค์บ” ๋Œ€์ƒ. (+ ํ•„ํ„ฐ)

์ปดํฌ๋„ŒํŠธ ํƒ์ƒ‰ ์œ„์น˜ ์ง€์ •basePackages = "๊ฒฝ๋กœ"  ๐Ÿ’ก basePackages = ("๊ฒฝ๋กœ1", "๊ฒฝ๋กœ2") ๋กœ ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ๐Ÿ’ก ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด, @ComponentScan์ด ๋ถ™์€ ํŒจํ‚ค์ง€๊ฐ€ ์‹œ์ž‘ ์œ„์น˜๊ฐ€ ๋œ๋‹ค.โ€ป ์ด ๋ฐฉ๋ฒ•, ์„ค์ • ์ •๋ณด ํด๋ž˜์Šค์˜ ์œ„์น˜๋ฅผ ํ”„๋กœ์ ํŠธ ์ตœ์ƒ๋‹จ์— ๋‘๋Š” ๋ฐฉ๋ฒ•์ด ๊ถŒ์žฅ๋œ๋‹ค. ๐Ÿ’ก ์ค‘์š”!!!์Šคํ”„๋ง๋ถ€ํŠธ๋กœ ์ƒ์„ฑํ•˜๋ฉด ์ž๋™์ƒ์„ฑ๋˜๋Š” @SpringBootApplication ์— @ComponentScan์ด ๋“ค์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์Šคํ”„๋ง๋ถ€ํŠธ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด @ComponentScan์œผ๋กœ ํด๋ž˜์Šค๋ฅผ ์ง€์ •ํ•  ํ•„์š”์—†์ด ๋ฐ”๋กœ @Component๋งŒ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.  ์ปดํฌ๋„ŒํŠธ ์Šค์บ” ๊ธฐ๋ณธ ๋Œ€์ƒ @Componentโ†’ ๋นˆ์œผ๋กœ ๋งŒ๋“ค ํด๋ž˜์Šค ๊ฐ์ฒด๋กœ ์ธ์‹.@Controllerโ†’ ์Šคํ”„๋ง MVC ์ปจํŠธ๋กค..

[Spring]์ปดํฌ๋„ŒํŠธ ์Šค์บ”๊ณผ ์˜์กด๊ด€๊ณ„ ์ž๋™ ์ฃผ์ž…

์ปดํฌ๋„ŒํŠธ ์Šค์บ”๊ณผ์˜์กด๊ด€๊ณ„ ์ž๋™ ์ฃผ์ž… ๋“ฑ๋กํ•ด์•ผ ํ•  ์Šคํ”„๋ฆฐ ๋นˆ์ด ์ˆ˜์‹ญ, ์ˆ˜๋ฐฑ๊ฐœ๊ฐ€ ๋  ๊ฒฝ์šฐ์Šคํ”„๋ง์€ ์ž๋™์œผ๋กœ ์Šคํ”„๋ง ๋นˆ์„ ๋“ฑ๋กํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ ์Šค์บ” ์ด๋ผ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.์˜์กด๊ด€๊ณ„๋„ ์ž๋™์œผ๋กœ ์ฃผ์ž…ํ•˜๋Š”  @Autowired  ๋ผ๋Š” ๊ธฐ๋Šฅ๋„ ์ œ๊ณตํ•œ๋‹ค.     AutoAppConfig ํด๋ž˜์Šค ํŒŒ์ผ์„ ๋งŒ๋“ ๋‹ค. @Configuration  ๊ณผ  @ComponentScan (: ๋‹จ์–ด ๊ทธ๋Œ€๋กœ @Component ๋“ค์„ Scan ํ•œ๋‹ค)์• ๋…ธํ…Œ์ด์…˜์„ ๋ถ™์—ฌ์ค€๋‹ค.์Šคํ”„๋ง ๋นˆ์œผ๋กœ ๋“ฑ๋กํ•  ํด๋ž˜์Šค๋“ค์—  @Component  ์• ๋…ธํ…Œ์ด์…˜์„ ๋ถ™์—ฌ์ค€๋‹ค.์˜์กด๊ด€๊ณ„๋Š”   @Autowired   ๋ฅผ ์ด์šฉํ•ด ์ฃผ์ž…ํ•œ๋‹ค.์ด๋ ‡๊ฒŒ ๋นˆ์œผ๋กœ ๋“ฑ๋ก๋œ ์ž์‹๊ฐ์ฒด์™€ @Autowired์— ์žˆ๋Š” ๋ถ€๋ชจ๊ฐ์ฒด๊ฐ€ ๊ฐ™์€ ํƒ€์ž…์ด๋ฏ€๋กœ ์ž๋™์œผ๋กœ ์˜์กด๊ด€๊ณ„๊ฐ€ ์—ฐ๊ฒฐ๋œ๋‹ค. ๐Ÿ’ก @Component("๋นˆ์ด๋ฆ„..

๐Ÿƒ Spring 2025.02.25
๋ฐ˜์‘ํ˜•