์คํ๋ง์์ ์์กด์ฑ ์ฃผ์ ์ ์ง์ํ๋ ์ด๋ ธํ ์ด์ ์ผ๋ก๋ @Autowired, @Inject, @Qualifier, @Resource๊ฐ ์๋ค.
์ด๋ ธํ ์ด์ |
์ค๋ช |
@Autowired |
์ฃผ๋ก ๋ณ์ ์์ ์ค์ ํ์ฌ ํด๋น ํ์ ์ ๊ฐ์ฒด๋ฅผ ์ฐพ์์ ์๋์ผ๋ก ํ ๋นํ๋ค. |
@Qualifier |
ํน์ ๊ฐ์ฒด์ ์ด๋ฆ์ ์ด์ฉํ์ฌ ์์กด์ฑ ์ฃผ์ ํ ๋ ์ฌ์ฉํ๋ค. |
@Inject |
@Autowired์ ๋์ผํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. |
@Resource |
@Autowired์ @Qualifier์ ๊ธฐ๋ฅ์ ๊ฒฐํฉํ ์ด๋ ธํ ์ด์ ์ด๋ค. |
1. @Autowired
- ์์ฑ์๋ ๋ฉ์๋, ๋ฉค๋ฒ๋ณ์ ์์ ๋ชจ๋ ์ฌ์ฉ๊ฐ๋ฅ
- ์ด๋์ ์ฌ์ฉํ๋ ๊ฒฐ๊ณผ๋ ๊ฐ์ง๋ง ๋๋ถ๋ถ์ ๋ฉค๋ฒ๋ณ์ ์์ ์ ์ธํ์ฌ ์ฌ์ฉ
- ์คํ๋ง ์ปจํ ์ด๋๋ ๋ฉค๋ฒ๋ณ์ ์์ ๋ถ์ @Autowired๋ฅผ ํ์ธํ๋ ์๊ฐ ํด๋น ๋ณ์์ ํ์ ์ ์ฒดํฌํ๊ณ ๊ทธ ํ์ ์ ๊ฐ์ฒด๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์กด์ฌํ๋์ง ํ์ธํ ํ ๊ฐ์ฒด๋ฅผ ๋ณ์์ ์ฃผ์
ใ ก> ๋ง์ฝ @Autowired๊ฐ ๋ถ์ ๊ฐ์ฒด๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์๋ค๋ฉด?
NoSuchBeanDefinitionException์ ๋ฐ์์ํจ๋ค. ๋ฐ๋ผ์ ๋ฐ๋์ ํด๋น ๊ฐ์ฒด๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์์ฑ๋๋๋ก ํด์ผํ๋ค.
2. @Qualifier
- ์์กด์ฑ ์ฃผ์ ๋ ๊ฐ์ฒด์ ์์ด๋๋ ์ด๋ฆ์ ์ง์
- ์์กด์ฑ ์ฃผ์ ๋์์ด ๋๋ ํ์ ์ ๊ฐ์ฒด๊ฐ ๋ ๊ฐ ์ด์์ผ ๋ ์ปจํ ์ด๋๋ ์ด๋ค ๊ฐ์ฒด๋ฅผ ํ ๋นํด์ผ ํ ์ง ์ค์ค๋ก ํ๋จํ ์ ์์ด์ ์ค๋ฅ ๋ฐ์ํ๋ค. ์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ์ ํ ๋ @Autowired ์๋์ @Qualifier๋ฅผ ์ฌ์ฉํ๋ค.
@Autowired
@Qualifier("apple") // appleํ์
์ ์คํผ์ปค ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ผ.
private Speaker speaker;
3. @Resource
- ๊ฐ์ฒด์ ์ด๋ฆ, ์ฆ name ์์ฑ์ ์ด์ฉํ์ฌ ์คํ๋ง ์ปจํ ์ด๋๊ฐ ํด๋น ์ด๋ฆ์ผ๋ก ์์ฑ๋ ๊ฐ์ฒด๋ฅผ ๊ฒ์ํ์ฌ ์์กด์ฑ ์ฃผ์ ์ ์ฒ๋ฆฌ
@Resource(name="apple")
private Speaker speaker;
4. @Inject
Resource์ ๊ฐ์ ๊ธฐ๋ฅ์ ์ด๋ ธํ ์ด์ ์ผ๋ก @Inject์ด ์๋ค.
'Spring > Spring Quick Start' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
IntelliJ ๋ค์์คํ์ด์ค(xmlns) ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ (0) | 2020.12.30 |
---|---|
๋น์ฆ๋์ค ์ปดํฌ๋ํธ ์ค์ต (0) | 2020.12.29 |
@Service, @Repository, @Controller์ ๊ฐ๋ตํ ์ค๋ช (0) | 2020.12.29 |
@Component ์ฌ์ฉ๋ฒ (0) | 2020.12.29 |
์ปฌ๋ ์ ๊ฐ์ฒด ์ค์ ์ข ๋ฅ (0) | 2020.12.29 |
Setter ์ธ์ ์ ์ด์ฉํ๊ธฐ (p ๋ค์์คํ์ด์ค) (0) | 2020.12.29 |