๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Springboot

์Šคํ”„๋ง ๋ถ€ํŠธ ์ž๋™์„ค์ • ๊ฐ„๋‹จํ•˜๊ฒŒ ์ดํ•ดํ•˜๊ธฐ

 

bean์€ 2๋‹จ๊ณ„๋กœ ๋‚˜๋ˆ ์„œ ์ฝํžŒ๋‹ค.

@SpringBootApplication ์•ˆ์— @ComponentScan์™€ @EnableAutoConfiguration์ด ์ˆจ์–ด์žˆ๋‹ค.

1๋‹จ๊ณ„: @ComponentScan

@ComponentScan์€ ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.

ํŠน์ • ํŒจํ‚ค์ง€ ์ดํ•˜์— ์žˆ๋Š” ๋ชจ๋“  ํด๋ž˜์Šค๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ๊ทธ ์œ„์— @Configuration, @Component, @Repository, @Service, @Controller, @RestController ๊ฐ™์€ ์• ๋…ธํ…Œ์ด์…˜์ด ๋ถ™์€ ํด๋ž˜์Šค๋ฅผ ๋นˆ์œผ๋กœ ๋“ฑ๋กํ•ด์ค€๋‹ค.

 

2๋‹จ๊ณ„: @EnableAutoConfiguration

org.springframework.boot.autoconfigure.EnableAutoConfiguration

@EnableAutoConfiguration๋Š” ์Šคํ”„๋ง ๋ถ€ํŠธ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.

์Šคํ”„๋ง ๋ถ€ํŠธ๊ฐ€ ๋งŒ๋“  ์—ฌ๋Ÿฌ ์ž๋™ ์„ค์ •์„ ์‚ฌ์šฉํ•˜๋„๋ก ๊ธฐ๋Šฅ์„ ์กฐ๊ฑด์— ๋”ฐ๋ผ ํ™œ์„ฑํ™” ์‹œํ‚ค๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

spring.factories ํŒŒ์ผ์˜ ํ‚ค ๊ฐ’์— ์„ค์ •๋œ ํด๋ž˜์Šค๋“ค์„ ์ฝ์–ด๋“ค์ธ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ spring.factories ํŒŒ์ผ์— ์„ค์ •๋œ ์ˆ˜๋งŽ์€ ํด๋ž˜์Šค(@Configuration)๋“ค์„ ๋‹ค ์ฝ์–ด๋“ค์ด๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค.

๋ณดํ†ต @Import๋ผ๋Š” ์• ๋…ธํ…Œ์ด์…˜๊ณผ @ConditionalOnAaaBbbCcc์˜ ์กฐํ•ฉ์œผ๋กœ ์ฝ์–ด๋“ค์ธ๋‹ค.

์กฐ๊ฑด์— ๋”ฐ๋ผ ๋นˆ์„ ๋“ฑ๋กํ•  ์ˆ˜๋„, ์•ˆํ•  ์ˆ˜๋„ ์žˆ๋„๋ก ์„ค์ •ํ•œ ๊ฒƒ์ด๋‹ค.

 

์ž๋™์„ค์ •๊ณผ ๊ด€๋ จ๋œ spring.factories์˜ ์œ„์น˜

Maven:org.springframework.boot.spring-boot-autoconfigure:๋ฒ„์ „ > META-INF > spirng.factories