โ๏ธ Spring Annotation ์ข
๋ฅ
๐ Bean ๋ฑ๋ก ์ ์ฌ์ฉ
@Component : ๊ฐ์ฒด(์ปดํฌ๋ํธ)๋ฅผ ๋ํ๋ด๋ ์ผ๋ฐ์ ์ธ ํ์
์ผ๋ก <\bean> ํ๊ทธ์ ๋์ผํ ์ญํ
@Repository : ํผ์์คํด์ค(persistence) ๋ ์ด์ด, ์์์ฑ์ ๊ฐ์ง๋ ์์ฑ(ํ์ผ, ๋ฐ์ดํฐ๋ฒ ์ด์ค)๋ฅผ ๊ฐ์ง ํด๋์ค
@Service : ์๋น์ค ๋ ์ด์ด, ๋น์ฆ๋์ค ๋ก์ง์ ๊ฐ์ง ํด๋์ค
@Controller : ํ๋ฆฌ์ ํ
์ด์
๋ ์ด์ด, ์น ์ ํ๋ฆฌ์ผ์ด์
์์ View์์ ์ ๋ฌ๋ ์น ์์ฒญ๊ณผ ์๋ต์ ์ฒ๋ฆฌํ๋ ํด๋์ค
=> @Repository, @Service, @Controller๋ ํน์ ํ ๊ฐ์ฒด์ ์ญํ ์ ๋ํ @Controller์ ๊ตฌ์ฒดํ ํํ!
๐ ์์กด์ฑ ์ฃผ์
์ ์ฌ์ฉ
@Autowired
- ์ ๋ฐํ ์์กด ๊ด๊ณ ์ฃผ์
(DI)์ด ํ์ํ ๊ฒฝ์ฐ์ ์ ์ฉํ๋ค.
- @Autowired๋ ํ๋ ๋ณ์, setter ๋ฉ์๋, ์์ฑ์, ์ผ๋ฐ ๋ฉ์๋์ ์ ์ฉ ๊ฐ๋ฅํ๋ค.
- ์์กดํ๋ ๊ฐ์ฒด๋ฅผ ์ฃผ์
ํ ๋ ์ฃผ๋ก Type์ ์ด์ฉํ๊ฒ ๋๋ค.
- @Autowired๋ <\property>, <\constructor-arg> ํ๊ทธ์ ๋์ผํ ์ญํ ์ ํ๋ค.
- @Qualifier : @Autowired์ ํจ๊ป ์ฐ์ด๋ฉฐ, ํ ํ๋ก์ ํธ ๋ด์ @Autowired๋ก ์์กด์ฑ์
์ฃผ์
ํ๊ณ ์ ํ๋ ๊ฐ์ฒด๊ฐ ์ฌ๋ฌ๊ฐ ์์ ๊ฒฝ์ฐ, @Qualifier(โnameโ)๋ฅผ ํตํด ์ํ๋ ๊ฐ์ฒด๋ฅผ ์ง์ ํ์ฌ ์ฃผ์
ํ ์ ์๋ค.
@Resource
- ์ ํ๋ฆฌ์ผ์ด์
์์ ํ์๋ก ํ๋ ์์์ ์๋ ์ฐ๊ฒฐํ ๋ ์ฌ์ฉ๋๋ค.
- @Resource๋ ํ๋กํผํฐ, setter ๋ฉ์๋์ ์ ์ฉ ๊ฐ๋ฅํ๋ค.
- ์์กดํ๋ ๊ฐ์ฒด๋ฅผ ์ฃผ์
ํ ๋ ์ฃผ๋ก Name์ ์ด์ฉํ๊ฒ ๋๋ค.
@Value
- ๋จ์ํ ๊ฐ์ ์ฃผ์
ํ ๋ ์ฌ์ฉ๋๋ ์ด๋
ธํ
์ด์
- @Value('Spring')์ <property ... value='Spring'/>๊ณผ ๋์ผํ ์ญํ
@Autowired์ @Resource ์ด๋
ธํ
์ด์
- ๊ณตํต์ : @Component๋ก ์์กด๊ด๊ณ๋ฅผ ์ค์ ํ ๊ฐ์ฒด๋ก๋ถํฐ ์์กด ๊ด๊ณ๋ฅผ ์๋์ผ๋ก ์ฃผ์
- ์ฐจ์ด์ : @Autowired๋ ํ์
์ผ๋ก, @Resource๋ ์ด๋ฆ์ผ๋ก ์ฐ๊ฒฐ