๐ŸƒBean์ด ๋“ฑ๋ก๋˜๋Š” ๊ณผ์ •

dev_itzel_02โœจยท2025๋…„ 4์›” 4์ผ

๐ŸƒJavaSpring

๋ชฉ๋ก ๋ณด๊ธฐ
10/11
post-thumbnail

์Šคํ”„๋ง์„ ํ•™์Šตํ•  ๋•Œ ํ•ต์‹ฌ ๊ฐœ๋… ์ค‘ ํ•˜๋‚˜๋Š” Bean์ด๋‹ค.
Bean ๊ฐœ๋…์„ ๋ชจ๋ฅด๋ฉด ์Šคํ”„๋ง ํ”„๋กœ์ ํŠธ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ์ดํ•ดํ•  ์ˆ˜ ์—†์„ ๊ฒƒ์ด๋‹ค.

๋‚ด๊ฐ€ ๊ณต๋ถ€ํ•˜๊ณ  ์ดํ•ดํ•œ ๋ฐฉ์‹๋Œ€๋กœ ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด๋ ค ํ•œ๋‹ค.


Bean

์šฐ์„  Bean์ด๋ž€ ๊ฐ์ฒด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

Java์˜ ๊ฒฝ์šฐ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ,

public class A {
	b = new B();
}

์œ„์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ new ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ์ƒ์„ฑํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ์Šคํ”„๋ง์—์„œ๋Š”

public class A {
	private B b;
}

ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ์„ ์–ธํ•ด์ฃผ๋Š” ๋ฐฉ์‹์ด๋‹ค.

์œ„์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์ด์œ ๋Š” ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ฐ์ฒด๋ฅผ ๋ณ„๋„๋กœ ๊ด€๋ฆฌํ•˜๊ณ  ์ƒ์„ฑํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์ฆ‰, ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ A๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ฐ์ฒด A๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋„˜๊ฒจ์ฃผ๋Š” ๋ฐฉ์‹์ด๋‹ค.

๊ทธ๋Ÿผ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋Š” ๊ฐ์ฒด๋ฅผ ์–ด๋–ป๊ฒŒ ์ธ์‹ํ• ๊นŒ ?
-> ์‚ฌ์šฉ์ž๊ฐ€ ์ž‘์„ฑํ•œ ์–ด๋…ธํ…Œ์ด์…˜์„ ํ†ตํ•ด ๋นˆ์„ ๋“ฑ๋กํ•œ๋‹ค.


์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ๋นˆ ๋“ฑ๋ก ๊ณผ์ •์„ ์•Œ์•„๋ณด์•˜๋‹ค.
@SpringBootApplication ์ด๋ผ๋Š” ์–ด๋…ธํ…Œ์ด์…˜์€ ํ•ด๋‹น ํด๋ž˜์Šค๋ฅผ ๋ฉ”์ธ ํด๋ž˜์Šค๋กœ ์ธ์‹ํ•˜๊ณ , ์Šคํ”„๋ง ๋ถ€ํŠธ ์‚ฌ์šฉ์— ํ•„์š”ํ•œ ๊ธฐ๋ณธ ์„ค์ •์„ ํ•ด์ค€๋‹ค.

@SpringBootApplication ๊ตฌ์„ฑ

  • @SpringBootConfiguration : ์Šคํ”„๋ง ๋ถ€ํŠธ ๊ด€๋ จ ์„ค์ •์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. @Configuration์„ ์ƒ์†ํ•ด์„œ ๋งŒ๋“  ์–ด๋…ธํ…Œ์ด์…˜์ด๋‹ค.

  • @ComponentScan : ์‚ฌ์šฉ์ž๊ฐ€ ๋“ฑ๋กํ•œ ๋นˆ์„ ์ฝ๊ณ  ๋“ฑ๋กํ•œ๋‹ค. ๋˜ํ•œ @Component๋ผ๋Š” ์–ด๋…ธํ…Œ์ด์…˜์„ ๊ฐ€์ง„ ํด๋ž˜์Šค๋ฅผ ์ฐพ์•„ ๋นˆ์œผ๋กœ ๋“ฑ๋กํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

  • @EnableAutoConfiguration : ์ž๋™ ๊ตฌ์„ฑ์„ ํ™œ์„ฑํ™”ํ•œ๋‹ค. ์Šคํ”„๋ง ๋ถ€ํŠธ ์„œ๋ฒ„๊ฐ€ ์‹คํ–‰๋  ๋•Œ, ๋ฉ”ํƒ€ ํŒŒ์ผ์„ ์ฝ๊ณ  ์ •์˜๋œ ์„ค์ •๋“ค์„ ์ž๋™์œผ๋กœ ๊ตฌ์„ฑํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ๋ชจ๋“  ๋นˆ์— @Component ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ฐœ๋ฐœ์„ ํ•˜๋ฉด ์šฉ๋„์— ๋”ฐ๋ผ ์—ญํ• ์„ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

  • @Configuration -> ์„ค์ • ํŒŒ์ผ ๋“ฑ๋ก
  • @Repository -> ORM ๋งคํ•‘
  • @Controller, @RestController -> ๋ผ์šฐํ„ฐ
  • @Service -> ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง

์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜๋“ค์ด๋‹ค.


@RestController ๊ตฌ์„ฑ

์•ž์„œ, @ComponentScan ์ด @Component ์–ด๋…ธํ…Œ์ด์…˜์„ ๊ฐ€์ง„ ํด๋ž˜์Šค๋“ค์„ ์ฐพ์•„ ๋นˆ์œผ๋กœ ๋“ฑ๋กํ•œ๋‹ค๊ณ  ํ•˜์˜€๋‹ค.

ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ๋Š” ์–ด๋–ป๊ฒŒ ํ•ด๋‹น ํด๋ž˜์Šค๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ผ๊นŒ?

์–ด๋…ธํ…Œ์ด์…˜์˜ ๊ตฌ์„ฑ์„ ์‚ดํŽด๋ณด์•˜๋‹ค.

@RestController๋Š” @Controller์™€ @ResponseBody ์ด 2๊ฐœ์˜ ์–ด๋…ธํ…Œ์ด์…˜์„ ํ•ฉ์นœ ๊ฒƒ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์„œ @Component๋Š” ์ฐพ์•„๋ณผ ์ˆ˜ ์—†๋‹ค.

@Controller ๊ตฌ์„ฑ

@Controller ์–ด๋…ธํ…Œ์ด์…˜์˜ ๊ตฌ์„ฑ์„ ๋ณด๋‹ˆ ๋น„๋กœ์†Œ @Component ์–ด๋…ธํ…Œ์ด์…˜์„ ์ฐพ์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

์ฆ‰, ๋‹ค๋ฅธ ์–ด๋…ธํ…Œ์ด์…˜๋“ค์ด @Component ์–ด๋…ธํ…Œ์ด์…˜์„ ๊ฐ์‹ธ๊ณ  ์žˆ๋Š” ๊ตฌ์กฐ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์œ„์—์„œ ์†Œ๊ฐœํ•œ 4๊ฐœ์˜ ์–ด๋…ธํ…Œ์ด์…˜๋“ค๋„ @Component ์–ด๋…ธํ…Œ์ด์…˜์„ ํฌํ•จํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋นˆ์œผ๋กœ ๋“ฑ๋ก๋  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

profile
๐Ÿœ๐Ÿ‘ฃsteadiness๐Ÿœ๐Ÿ‘ฃ

0๊ฐœ์˜ ๋Œ“๊ธ€