MapleStory Cookie With Halo

๐Ÿƒ Spring 46

[Spring]@Configuration๊ณผ ๋ฐ”์ดํŠธ์ฝ”๋“œ ์กฐ์ž‘

โ€ป ์ด์ „ ๊ธ€2025.02.24 - [๐Ÿƒ Spring/๐Ÿƒ Spring Boot] - [SpringBoot]์‹ฑ๊ธ€ํ†ค ์ปจํ…Œ์ด๋„ˆ2025.02.25 - [๐Ÿ“‘ ๊ฐœ๋ฐœ ์‚ฌ์ „/โœจ ๋””์ž์ธ ํŒจํ„ด] - ์‹ฑ๊ธ€ํ†ค ๋ฐฉ์‹์˜ ์ฃผ์˜์    2๊ฐœ์˜ ์„œ๋น„์Šค์—์„œ โ†’ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ์žˆ๋‹ค. ํ˜ธ์ถœ ์‹คํ–‰ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์—ฌ๋Ÿฌ๋ฒˆ ํ˜ธ์ถœ๋˜์—ˆ์ง€๋งŒ ๋”ฑ ํ•œ๋ฒˆ์”ฉ๋งŒ call์ด ์ฐํžŒ ๊ฒƒ์ด๋ณด์ด๋ฉฐ ๋ชจ๋‘ ๋™์ผํ•œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ@3c9c0d96์ด๋‹ค. @Configuration ์ด AppConfig.class์— ์ ํ˜€์žˆ๋Š”๋ฐ ์—ฌ๊ธฐ์„œ @Bean์ด ์ ํžŒ ๊ฐ์ฒด๋“ค์„ ๋ณต์‚ฌํ•œ๋‹ค.์ถœ๋ ฅ์„ ๋ณด๋ฉด ์›๋ณธ appConfig๊ณผ ๋‹ค๋ฅธ ์ฃผ์†Œ class hello.core.AppConfig$$SpringCGLIB$$0 ๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” ๊ฒŒ ๋ณด์ธ๋‹ค.์ด๊ฒƒ์ด ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ฐ€์ง„ ์‹ฑ๊ธ€ํ†ค ๋นˆ ๊ฐ์ฒด๋กœ, ์Šคํ”„๋ง์€ ์ด..

๐Ÿƒ Spring 2025.02.25

[SpringBoot]์‹ฑ๊ธ€ํ†ค ์ปจํ…Œ์ด๋„ˆ

๐Ÿ’ก ์‹ฑ๊ธ€ํ†ค์ด๋ž€?2025.02.24 - [๐Ÿ“‘ ๊ฐœ๋ฐœ ์‚ฌ์ „/โœจ ๋””์ž์ธ ํŒจํ„ด] - Singleton ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด  ์‹ฑ๊ธ€ํ†ค ์ปจํ…Œ์ด๋„ˆ  ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋Š” ์‹ฑ๊ธ€ํ„ด ํŒจํ„ด์„ ์ ์šฉํ•˜์ง€ ์•Š์•„๋„, ๊ฐ์ฒด๋ฅผ ์‹ฑ๊ธ€ํ†ค์œผ๋กœ ๊ด€๋ฆฌํ•œ๋‹ค.์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋Š” ์‹ฑ๊ธ€ํ†ค ์ปจํ…Œ์ด๋„ˆ ์—ญํ• ์„ ํ•œ๋‹ค.โ†’ ์ด๋ ‡๊ฒŒ ์‹ฑ๊ธ€ํ†ค ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์‹ฑ๊ธ€ํ†ค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ๋ผ๊ณ  ํ•œ๋‹ค.์ด ๋•๋ถ„์— ์‹ฑ๊ธ€ํ†ค์˜ ๋ชจ๋“  ๋‹จ์ (DIP, OCP, ์ฝ”๋“œ์˜ ๋ณต์žก์„ฑ, ํ…Œ์ŠคํŠธ)์„ ํ•ด๊ฒฐํ•œ๋‹ค. ๐Ÿ’ก ์Šคํ”„๋ง์˜ ๊ธฐ๋ณธ ๋นˆ ๋“ฑ๋ก ๋ฐฉ์‹์€ ์‹ฑ๊ธ€ํ†ค์ด์ง€๋งŒ, ๋‹ค๋ฅธ ๋ฐฉ์‹๋„ ์ง€์›ํ•œ๋‹ค.ํ•˜์ง€๋งŒ ๋ณดํ†ต 99ํผ ๊ทธ๋Œ€๋กœ ์‹ฑ๊ธ€ํ†ค ๋ฐฉ์‹์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•œ๋‹ค. โ€ป ์ฐธ์กฐ : https://www.inflearn.com/roadmaps/373

[SpringBoot]BeanDefinition

์Šคํ”„๋ง์ด ๋‹ค์–‘ํ•œ ์„ค์ • ํ˜•์‹์„ ์ง€์›2025.02.24 - [๐Ÿƒ Spring/๐Ÿƒ Spring Boot] - [SpringBoot]๋‹ค์–‘ํ•œ ์„ค์ • ์ง€์›-์ž๋ฐ” ์ฝ”๋“œ, xml ํ•  ์ˆ˜ ์žˆ๋Š” ์ด์œ ๋Š” BeanDefinition์ด๋ผ๋Š” ์ถ”์ƒํ™”๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.Spring Container โ†’ BeanDefinition โ† Appconfig.class / appConfig.xml / appCoinfig.xxx์„ค์ • ํŒŒ์ผ ํ˜•์‹์„ ์ฝ๋Š” AnnotationConfigApplicationContext์™€ genericXmlApplicationContext ํด๋ž˜์Šค๋ฅผ ๋ณด๋ฉด ๋นˆ์„ ์ฝ๋Š” BeanDefinitionReader๊ฐ€ ์ „์—ญ๋ณ€์ˆ˜๋กœ ์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.์œ„์™€ ๊ฐ™์ด ์ด ๋ฉ”ํƒ€ ์ •๋ณด BeanDefinition ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์Šคํ”„๋ง ๋นˆ..

[SpringBoot]๋‹ค์–‘ํ•œ ์„ค์ • ์ง€์›-์ž๋ฐ” ์ฝ”๋“œ, xml

์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋Š” ๋‹ค์–‘ํ•œ ํ˜•์‹์˜ ์„ค์ • ์ •๋ณด๋ฅผ ๋ฐ›์•„๋“ค์ผ ์ˆ˜ ์žˆ๋‹ค.์ž๋ฐ” ์ฝ”๋“œ AppConfig.class, xml, Groovy  emd@์• ๋…ธํ…Œ์ด์…˜ ๊ธฐ๋ฐ˜ ์ž๋ฐ” ์ฝ”๋“œ ์„ค์ • ์‚ฌ์šฉxml ์„ค์ •๋ ˆ๊ฑฐ์‹œ ํ”„๋กœ์ ํŠธ ๋“ค์—์„œ ๋งŽ์ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค.์žฅ์  : ์ปดํŒŒ์ผ ์—†์ด ๋นˆ ์„ค์ • ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.appConfig.xml ๋งŒ๋“ค๊ธฐ์ฝ”๋“œ๋”๋ณด๊ธฐ โ€ป ref๋Š” reference์˜ ์ค„์ž„ ๋ง๋กœ ์ฐธ์กฐํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค. ๊ทธ๋ž˜์„œ ref์— ๋“ค์–ด๊ฐ„ ์ด๋ฆ„๋“ค์„ ๋”ฐ๋กœ ์œผ๋กœ ๋งŒ๋“ค์–ด ๋‘” ๊ฒƒ์ด๋‹ค.ํ…Œ์ŠคํŠธโ€ป ์ฐธ์กฐ : https://www.inflearn.com/roadmaps/373

[SpringBoot]BeanFactory์™€ ApplicationContext

์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆBeanFactory์™€ ApplicationContext BeanFactory์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์˜ ์ตœ์ƒ์œ„ ์ธํ„ฐํŽ˜์ด์Šค.๋นˆ์„ ๊ด€๋ฆฌํ•˜๊ณ  ์กฐํšŒ getBean().ApplicationContextBeanFactory ๊ธฐ๋Šฅ์„ ๋ชจ๋‘ ์ƒ์† ๋ฐ›์•„ ์ œ๊ณตํ•œ๋‹ค.๋นˆ ์กฐํšŒ ์™ธ์—๋„ ํŽธ๋ฆฌํ•œ ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.MessageSource ๋ฅผ ํ™œ์šฉํ•œ ๊ตญ์ œํ™” ๊ธฐ๋Šฅโ†’ ๊ฐ ๋‚˜๋ผ์— ๋งž๊ฒŒ ๋ฒˆ์—ญํ•ด ์ถœ๋ ฅํ•œ๋‹ค.EnviromentCapable ํ™˜๊ฒฝ๋ณ€์ˆ˜โ†’ ๋กœ์ปฌ/๊ฐœ๋ฐœ/์šด์˜ ๋“ฑ์„ ๊ตฌ๋ถ„ํ•ด์„œ ์ฒ˜๋ฆฌํ•œ๋‹ค.ApplicationEventPublisher ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด๋ฒคํŠธโ†’ ์ด๋ฒคํŠธ๋ฅผ ๋ฐœํ–‰ํ•˜๊ณ  ๊ตฌ๋…ํ•˜๋Š” ๋ชจ๋ธ์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ์ง€์›ํ•œ๋‹ค.ResourcePatternResolver ํŽธ๋ฆฌํ•œ ๋ฆฌ์†Œ์Šค ์กฐํšŒโ†’ ํŒŒ์ผ/ํด๋ž˜์ŠคํŒจ์Šค/์™ธ๋ถ€ ์†Œ์Šค๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ์กฐํšŒ  ๐Ÿ’ก ๋”ฐ๋ผ์„œ ๋ถ€๊ฐ€๊ธฐ๋Šฅ์ด ..

[SpringBoot]์Šคํ”„๋ง ๋นˆ ์กฐํšŒ

๊ธฐ๋ณธ ์กฐํšŒac.getBean(๋นˆ์ด๋ฆ„, ํƒ€์ž…)   ๐Ÿ’ก ์˜ค๋ฅ˜ ํ…Œ์ŠคํŠธ๋นˆ์ด ์—†์œผ๋ฉด NoSuchBeanDefinitionException ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.assertThrows๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒ ์‹œ ํ…Œ์ŠคํŠธ ์„ฑ๊ณต์ด ๋œจ๊ฒŒ๋” ์ฝ”๋“œ๊ฐ€ ์งœ์˜€๋‹ค.  ๋™์ผํ•œ ํƒ€์ž…์ด ๋‘๊ฐœ ์ด์ƒ์ผ ๊ฒฝ์šฐ    ๐Ÿ’ก ํŠน์ • ํƒ€์ž… ๋ชจ๋‘ ์กฐํšŒํ•˜๊ธฐ  ac.getBeansOfType(ํƒ€์ž…);   ์ƒ์†๊ด€๊ณ„ ๋ถ€๋ชจ ํƒ€์ž…(Interface)์œผ๋กœ ์กฐํšŒํ•˜๋ฉด, ์ž์‹ ํƒ€์ž…๋„ ํ•จ๊ป˜ ์กฐํšŒ๋œ๋‹ค.๊ทธ๋ž˜์„œ ๋ชจ๋“  ์ž๋ฐ” ๊ฐ์ฒด์˜ ์ตœ๊ณ  ๋ถ€๋ชจ์ธ Objectํƒ€์ž…์œผ๋กœ ์กฐํšŒํ•˜๋ฉด, ๋ชจ๋“  ์Šคํ”„๋ง ๋นˆ์„ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.     ํ‰์ƒ ์‹œ์—๋Š” ์ด๋Ÿฌํ•œ ๋นˆ ์กฐํšŒ๋ฅผ ์‚ฌ์šฉํ•  ์ผ์ด ์—†์ง€๋งŒ, ์ˆœ์ˆ˜ ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ Spring์œผ๋กœ ๋ณ€ํ™˜ ์‹œ ์‚ฌ์šฉ๋œ๋‹ค. โ€ป ์ฐธ์กฐ : https://www.inflearn.com/r..

[SpringBoot]์Šคํ”„๋ง์œผ๋กœ ์ „ํ™˜

์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ ApplicationContext   ์ธํ„ฐํŽ˜์ด์Šค ์ด๋‹ค.๊ตฌํ˜„์ฒด  new AnnotationConfigApplicationContext(AppConfig.class);์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๊ตฌ์„ฑ ์ •๋ณด(AppConfig)๋ฅผ ์ง€์ •ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.AppConfig์— @Bean ์ด ๋ถ™์€ ํด๋ž˜์Šค๋“ค์„ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์— ๋‹ด์•„์„œ ๊ด€๋ฆฌํ•ด์ค€๋‹ค.์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋Š” XML ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ๊ณ , ์• ๋…ธํ…Œ์ด์…˜ ๊ธฐ๋ฐ˜ ์ž๋ฐ” ์„ค์ • ํด๋ž˜์Šค๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.โ€ป ์š”์ฆ˜์€ xml๋กœ ์ž˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.AC.getBean("ํด๋ž˜์Šค๋ช…", ํƒ€์ž…);  @Configuration@Bean   ์Šคํ”„๋ง ๋นˆ ๋“ฑ๋ก @Bean  Bean ์• ๋…ธํ…Œ์ด์…˜์ด ๋ถ™์€ ํด๋ž˜์Šค๋“ค์„ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋นˆ์œผ๋กœ ๋“ฑ๋กํ•œ๋‹ค.์ด ๋•Œ ํ•จ์ˆ˜๋ช… ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•œ๋‹ค.๋นˆ ์ด๋ฆ„์„ ์ง€..

[SpringBoot][Maven][RestAPI]MyBatis, JPA์‚ฌ์šฉํ•˜๊ธฐ

โ€ป ์ด์ „ ํŽธ2025.01.26 - [๐Ÿƒ Spring/๐Ÿƒ Spring Boot] - [SpringBoot][RestAPI]Get/PostMapping(+json)  DB ์—ฐ๊ฒฐ pom.xml์— DB ์˜์กด์„ฑ์ถ”๊ฐ€application.properties์˜ ํ˜•์‹์„ application.yml๋กœ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๊ฐ€๋…์„ฑ๊ณผ ํ˜ธํ™˜์„ฑ์ด ์ข‹์•„์ง„๋‹ค.DB์—ฐ๊ฒฐ ์ฝ”๋“œ๋ฅผ ์ ์–ด์ค€๋‹ค.(๊ฐ•์˜ ์ฝ”๋“œ์—์„œ ์ข€ ๋” ์ถ”๊ฐ€ํ•ด์ค˜์•ผ ์‹คํ–‰๋๋‹ค)๋ธŒ๋ผ์šฐ์ €๋กœ http://127.0.0.1:8080/h2-console ์— ์ ‘์†ํ•˜๋ฉด ์ด๋Ÿฐ ์ฐฝ์ด ๋œฌ๋‹ค.JDBC URL ๋งŒ application.yml ์—์„œ ์ง€์ •ํ•œ ๋Œ€๋กœ ์ ์–ด์ค€๋‹ค.์ ‘์†ํ•˜๋ฉด ์ด๋Ÿฌํ•œ h2์—์„œ ์ œ๊ณตํ•˜๋Š” ํ™”๋ฉด์ด ๋ณด์ธ๋‹ค.์ฟผ๋ฆฌ๋กœ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค๊ณ  ๊ฐ’์„ ๋„ฃ์–ด์คฌ๋‹ค.  MyBatis ์‚ฌ์šฉํ•˜๊ธฐ ๋ฉ”์ด๋ธ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ Mybatis..

[SpringBoot][RestAPI]Get/PostMapping(+json)

โ€ป ์ด์ „ ํŽธ2025.01.26 - [๐Ÿƒ Spring/๐Ÿƒ Spring Boot] - [SpringBoot][RestAPI]ํ™˜๊ฒฝ์„ค์ •(์˜์กด์„ฑ ์ถ”๊ฐ€-web, swagger, lombok)   @GetMapping  QuickController์— get๋ฉ”์„œ๋“œ๋ฅผ ๋‘๊ฐœ ์ถ”๊ฐ€ํ–ˆ๋‹ค. @RequestParam  : ์ผ๋ฐ˜์ ์ธ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐ›์„ ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. @PathVariable : Path๋กœ ๊ฐ’์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.  @PostMapping   Post ๋ฉ”์„œ๋“œ๋Š” Body๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐ›์„ ๋•Œ  @RequestBody ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.์Šค์›จ๊ฑฐ์—์„œ ์‹คํ–‰.URL ์— ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์ด ๋Œ€์‹  mapping๋ช…์ด ์ ํ˜€ ์žˆ๋‹ค.  -d : body๋ž€์ด๋‹ค. ์ด๊ณณ์— ์ž…๋ ฅํ•œ ๊ฐ’์ด ๋‹ด๊ธด ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.  jsonํƒ€์ž… ์‚ฌ์šฉํ•˜๊ธฐโ†’ Dt..

[SpringBoot][Maven][RestAPI]ํ™˜๊ฒฝ์„ค์ •(์˜์กด์„ฑ ์ถ”๊ฐ€-web, swagger, lombok)

SpringBoot ๋‹ค์šด๋กœ๋“œ https://start.spring.io/์—์„œ ์•„๋ž˜ ์บก์ฒ˜๋Œ€๋กœ ์ž…๋ ฅ ํ›„ GENERATE ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ๋‹ค.๋‹ค์šด๋กœ๋“œ ๋ฐ›์€ ํŒŒ์ผ ์••์ถ•์„ ํ’€๊ณ  VScode์— ๋ถˆ๋Ÿฌ์˜ต๋‹ˆ๋‹ค.git์— ์˜ฌ๋ฆฌ๊ณ  ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.2025.01.02 - [๐Ÿ˜ผ Git] - [Git]์ดˆ๊ฐ„๋‹จ ๋กœ์ปฌ ์›Œํฌ์ŠคํŽ˜์ด์Šค repository์— ์˜ฌ๋ฆฌ๊ธฐ ํ”„๋กœ์ ํŠธ๋ฅผ Run์„ ๋ˆŒ๋Ÿฌ ์‹คํ–‰ํ–ˆ์„ ๋•Œ ์•„๋ž˜์ฒ˜๋Ÿผ ๋œจ๋ฉด ์ž˜ ์ง„ํ–‰๋œ ๊ฒ๋‹ˆ๋‹ค.pom.xml์˜์กด์„ฑ spring-boot-starter๋ฅผ ์ฐพ์•„ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.์•„๋ž˜ ๋ถ™์—ฌ๋„ฃ๊ธฐํ•ด์„œ -web์„ ๋์— ๋ถ™์—ฌ์ค๋‹ˆ๋‹ค.๋‹ค์‹œ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰ํ•ด๋ณด๋ฉด Tomcat ๋“ฑ์ด ์„ค์น˜ ๋˜๊ณ  http://127.0.0.1:8080/ ๋กœ ๋“ค์–ด๊ฐ€๋ณด๋ฉด ๊ธฐ๋ณธํŽ˜์ด์ง€๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค. Swagger ์ถ”๊ฐ€: ์ธํ„ฐ๋„ท์ฐฝ์œผ๋กœ ๋ฉ”์„œ๋“œ ํ…Œ์ŠคํŠธํ•˜๊ธฐ controll..

๋ฐ˜์‘ํ˜•