๋ชจ๋ ์ฝ๋๋ ํ ์คํธ ์ฝ๋์ ์ถ๊ฐ
includeFilters : ์ปดํฌ๋ํธ ์ค์บ ๋์์ ์ถ๊ฐ๋ก ์ง์
excludeFilters : ์ปดํฌ๋ํธ ์ค์บ์์ ์ ์ธํ ๋์์ ์ง์
- ์ปดํฌ๋ํธ ์ค์บ ๋์์ ์ถ๊ฐํ ์ ๋ ธํ ์ด์

- ์ปดํฌ๋ํธ ์ค์บ ๋์์์ ์ ์ธํ ์ ๋ ธํ ์ด์

ํด๋์ค ํ์ ์ ๋ถ๋ ์ ๋ ธํ ์ด์ ์ด๋ผ๋ ์๋ฏธ๋ก,
@MyIncludeComponent๊ฐ ๋ถ์ผ๋ฉด ์ปดํฌ๋ํธ ์ค์บ์ ์ถ๊ฐ,
@MyExcludeComponent๊ฐ ๋ถ์ผ๋ฉด ์ปดํฌ๋ํธ ์ค์บ์์ ์ ์ธํ๋๋ก ๋ง๋ค๊ณ ์ ํ๋ค.
์ปดํฌ๋ํธ ๋์์ผ๋ก ์ถ๊ฐ ๋ฐ ์ ์ธํ ํด๋์ค ์์ฑ
- ์ปดํฌ๋ํธ ๋์์ผ๋ก ์ถ๊ฐํ BeanA

- ์ปดํฌ๋ํธ ๋์์์ ์ ์ธํ BeanB

Config์ค์ ํด๋์ค์์ Filter๋ฅผ ๋ง๋ค์ด Testํ๊ธฐ

includeFilters๋ฅผ ์ฌ์ฉํ์ฌ Filterํ์ ์ ANNOTATION์ผ๋ก ํ์ฌ, MyIncludeComponent ์ ๋ ธํ ์ด์ ์ด ๋ถ์ ํด๋์ค๋ค์ ์ปดํฌ๋ํธ ๋์์ ์ถ๊ฐํ๋๋ก ์ค์ ํ๋ค.
excludeFilters๋ฅผ ์ฌ์ฉํ์ฌ Filterํ์ ์ ANNOTATION์ผ๋ก ํ์ฌ, MyExcludeComponent ์ ๋ ธํ ์ด์ ์ด ๋ถ์ ํด๋์ค๋ค์ ์ปดํฌ๋ํธ ๋์์์ ์ ์ธํ๋๋ก ์ค์ ํ๋ค.
ํ ์คํธ ์ฝ๋๋ฅผ ์คํ์ํค๋ฉด, ์ปดํฌ๋ํธ ์ค์บ ๋์์ธ beanA๋ฅผ ์กฐํํ๊ณ ์ด๋ MyIncludeComponent ์ ๋ ธํ ์ด์ ์ด ๋ถ์ด์๊ธฐ์ ๋น์ผ๋ก ๋ฑ๋ก๋๋ค. ๋ฐ๋ผ์ Null์ด ์๋๋ฏ๋ก ํ ์คํธ๊ฐ ๋ฌธ์ ์์ด ์ฑ๊ณตํ ๊ฒ์ด๋ค.

์ฐ๋ฆฌ๊ฐ ์ ์ธ์ํจ beanB๋ฅผ ์กฐํํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น?


beanB๋ผ๋ ์ด๋ฆ์ ๊ฐ์ง ๋น์ ์๋ค๋ NoSuchBeanDefinitionException์ด ๋ฐ์ํ๋ค.
ํ ์คํธ๋ฅผ ์ฑ๊ณต์ํค๊ธฐ ์ํด assertThrows๋ฅผ ํตํด ์์ธ์ฒ๋ฆฌ ํ์ฌ ํ ์คํธ๋ฅผ ์งํํด๋ณด๋ฉด


ํ ์คํธ ์ฑ๊ณต
FilterType ์ต์
1. ANNOTATION : ๊ธฐ๋ณธ๊ฐ, ์ ๋ ธํ ์ด์ ์ ์ธ์ํด์ ๋์
- ex) org.example.SomeAnnotation
2. ASSIGNABLE_TYPE : ์ง์ ํ ํ์ ๊ณผ ์์ ํ์ ์ ์ธ์ํด์ ๋์
- ex) org.example.SomeClass
3. ASPECTJ : AspectJ ํจํด ์ฌ์ฉ
- ex) org.example..*Service+
4. REGEX : ์ ๊ท ํํ์
- ex) org\.example\.Default.*
5. CUSTOM : TypeFilter ๋ผ๋ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํด์ ์ฒ๋ฆฌ
- ex) org.example.MyTypeFilter
์๋ฅผ ๋ค์ด์ BeanA๋ ์ ์ธํ๊ณ ์ถ์ผ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ถ๊ฐํ๋ฉด ๋๋ค.

ASSIGNABLE_TYPE์ ์ฌ์ฉํ์ฌ ์ง์ ํด๋์ค๋ฅผ ์ง์ ํ๋ค.
@Component๋ฉด ์ถฉ๋ถํ๊ธฐ ๋๋ฌธ์, includeFilter๋ฅผ ์ฌ์ฉํ ์ผ์ ๊ฑฐ์ ์๋ค. excludeFilters๋ ์ฌ๋ฌ๊ฐ์ง ์ด์ ๋ก ๊ฐํน ์ฌ์ฉํ ๋๊ฐ ์์ง๋ง ๋ง์ง๋ ์๋ค.
ํนํ ์คํ๋ง ๋ถํธ๋ ์ต๊ทผ ์ปดํฌ๋ํธ ์ค์บ์ ๊ธฐ๋ณธ์ผ๋ก ์ ๊ณตํ๋๋ฐ, ์ต์ ์ ๋ณ๊ฒฝํ๋ฉด์ ์ฌ์ฉํ๊ธฐ ๋ณด๋ค๋ ์คํ๋ง์ default์ค์ ์ ์ต๋ํ ๋ง์ถ์ด ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํ๋ค.
'Spring-study๐ฑ > Spring-Basic' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| Section 7-1. ๋ค์ํ ์์กด๊ด๊ณ ์ฃผ์ ๋ฐฉ๋ฒ (0) | 2022.04.27 |
|---|---|
| Section 6-4. ์ค๋ณต ๋ฑ๋ก๊ณผ ์ถฉ๋ (0) | 2022.04.26 |
| Section 6-2. ํ์ ์์น์ ๊ธฐ๋ณธ ์ค์บ ๋์ (0) | 2022.04.09 |
| Section 6-1. ์ปดํฌ๋ํธ ์ค์บ๊ณผ ์์กด๊ด๊ณ ์๋ ์ฃผ์ ์์ํ๊ธฐ (0) | 2022.04.09 |
| Section 5-6. @Configuration๊ณผ ๋ฐ์ดํธ์ฝ๋ ์กฐ์์ ๋ง๋ฒ (0) | 2022.04.09 |