์ง๊ธ๊น์ง ์คํ๋ง ๋น์ ๋ฑ๋กํ ๋๋ ์๋ฐ ์ฝ๋์ @Bean
์ด๋ XML์ <bean>
๋ฑ์ ํตํด์ ์ค์ ์ ๋ณด์ ์ง์ ๋ฑ๋กํ ์คํ๋ง ๋น์ ๋์ดํ๋ค.
์์ ์์๋ ๋ช๊ฐ๊ฐ ์๋์์ง๋ง, ์ด๋ ๊ฒ ๋ฑ๋กํด์ผ ํ ์คํ๋ง ๋น์ด ์์ญ, ์๋ฐฑ๊ฐ๊ฐ ๋๋ฉด ์ผ์ผ์ด ๋ฑ๋กํ๊ธฐ๋ ๊ท์ฐฎ๊ณ , ์ค์ ์ ๋ณด๋ ์ปค์ง๊ณ , ๋๋ฝํ๋ ๋ฌธ์ ๋ ๋ฐ์ํ๋ค.
๊ทธ๋์ ์คํ๋ง์ ์ค์ ์ ๋ณด๊ฐ ์์ด๋ ์๋์ผ๋ก ์คํ๋ง ๋น์ ๋ฑ๋กํ๋ ์ปดํฌ๋ํธ ์ค์บ์ด๋ผ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
@Autowired
๋ผ๋ ๊ธฐ๋ฅ๋ ์ ๊ณตํ๋ค.๊ธฐ์กด AppConfig.java
๋ ๊ณผ๊ฑฐ ์ฝ๋์ ํ
์คํธ๋ฅผ ์ ์งํ๊ธฐ ์ํด ๋จ๊ฒจ๋๊ณ , ์๋ก์ด AutoAppConfig.java
๋ฅผ ๋ง๋ ๋ค.
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
@Configuration
@ComponentScan(
excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class)
)
public class AutoAppConfig {
}
@ComponentScan
์ ์ค์ ์ ๋ณด์ ๋ถ์ฌ์ฃผ๋ฉด ๋๋ค.
AppConfig
์๋ ๋ค๋ฅด๊ฒ @Bean
์ผ๋ก ๋ฑ๋กํ ํด๋์ค๊ฐ ํ๋๋ ์๋ค!์ฐธ๊ณ : ์ปดํฌ๋ํธ ์ค์บ์ ์ฌ์ฉํ๋ฉด
@Configuration
์ด ๋ถ์ ์ค์ ์ ๋ณด๋ ์๋์ผ๋ก ๋ฑ๋ก๋๊ธฐ ๋๋ฌธ์,AppConfig
,TestConfig
๋ฑ ์์ ๋ง๋ค์ด๋์๋ ์ค์ ์ ๋ณด๋ ํจ๊ป ๋ฑ๋ก๋๊ณ , ์คํ๋์ด ๋ฒ๋ฆฐ๋ค. ๊ทธ๋์excludeFilters
๋ฅผ ์ด์ฉํด์ ์ค์ ์ ๋ณด๋ ์ปดํฌ๋ํธ ์ค์บ ๋์์์ ์ ์ธํ๋ค. ๋ณดํต ์ค์ ์ ๋ณด๋ฅผ ์ปดํฌ๋ํธ ์ค์บ ๋์์์ ์ ์ธํ์ง๋ ์์ง๋ง, ๊ธฐ์กด ์์ ์ฝ๋๋ฅผ ์ต๋ํ ๋จ๊ธฐ๊ณ ์ ์งํ๊ธฐ ์ํด์ ์ด ๋ฐฉ๋ฒ์ ์ ํํ๋ค.
@Component
์ ๋
ธํ
์ด์
์ด ๋ถ์ ํด๋์ค๋ฅผ ์ค์บํด์ ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋กํ๋ค.
@Component
๋ฅผ ๋ถ์ฌ์ค๋ค.@Configuration
์ด ์ปดํฌ๋ํธ ์ค์บ์ ๋์์ด ๋ ์ด์ ๋ @Configuration
์์ค์ฝ๋๋ฅผ ์ด์ด๋ณด๋ฉด @Component
์ ๋
ธํ
์ด์
์ด ๋ถ์ด์๊ธฐ ๋๋ฌธ์ด๋ค.โ ์ด์ ๊ฐ ํด๋์ค๊ฐ ์ปดํฌ๋ํธ ์ค์บ์ ๋์์ด ๋๋๋ก @Component
์ ๋
ธํ
์ด์
์ ๋ถ์ฌ์ค๋ค.
MemoryMemberRepository
์ @Component
์ถ๊ฐ