Lombok
lombok์์ @RequiredArgConstructor > ์๋์ผ๋ก ํ๋์ final์ด ๋ถ์ ๋ณ์๋ฅผ ์์ฑ์๋ก ๋ง๋ค์ด์ค๋ค.
ํ์ ์์๋ ๊ฑฐ์ ๋กฌ๋ณต์ ๋ง์ด ์ฌ์ฉํ๋ค.
์กฐํ bean์ด 2๊ฐ ์ด์์ผ๋
@Autowired ๋งค์นญ ์์
Autowired๋ ์ฒ์์ ํ์ ๋งค์นญ์ ์๋
๊ทธ๋ฆฌ๊ณ ์ฌ๋ฌ ๋น์ด ์์ผ๋ฉด ์ด๋ฆ, ํ๋ผ๋ฏธํฐ ์ด๋ฆ์ผ๋ก ๋น์ด๋ฆ์ ์ถ๊ฐ ๋งค์นญํ๋ค.
@Quilifier ์ฌ์ฉ
์ถ๊ฐ ๊ตฌ๋ถ์๋ฅผ ๋ถ์ฌ์ฃผ๋ ๋ฐฉ๋ฒ์ด๋ค. ์ด๋ฆ์ ๋ณ๊ฒฝํ๋๊ฒ์ ์๋.
@Quilifier ๋ผ๋ฆฌ ๋งค์นญ๋๋ค, ๋น์ด๋ฆ์ ๋งค์นญ์ํจ๋ค.
@Primary ์ฌ์ฉ
@Primary๋ฅผ ๋ฃ์ด์ฃผ๋ฉด ์ฐ์ ์์๋ฅผ ๋ถ์ฌํด์ ๋ค๋ฅธ๊ฒ๋ค์ ๋ฌด์ํ๊ณ ์ต์์๋ก ์์กด๊ด๊ณ๊ฐ ์ฃผ์ ๋๋ค.
๋ฉ์ธ๋ฐ์ดํฐ์ ๊ฒฝ์ฐ์๋ @Primary๋ฅผ ์ง์ ํด์ ์กฐํํ๊ณ , ์๋ธ ๋ฐ์ดํฐ์ ๊ฒฝ์ฐ์๋ @Qualifier๋ฅผ ์ง์ ํด์ ๋ช ์์ ์ผ๋ก ํ๋ํ๋ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ๋ฉด ์ฝ๋๋ฅผ ๊น๋ํ๊ฒ ์ ์ง๊ฐ๋ฅํ๋ค.
์ ๋ํ ์ด์ ์ ๋ง๋ค๋, ์ ๋ํ ์ด์ ์๋ ์์์ด๋ผ๋ ๊ฐ๋ ์ด์๋ค. ์ฆ ๋ด๊ฐ ์ปค์คํ ์ผ๋ก @Quilifier์ ๋ณต์ฌํ๊ณ ๊ธฐ๋ฅ์ ์ถ๊ฐํด์ ์ ๋ํ ์ด์ ์ ๋ง๋ค์์๋ @Quilifier์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์์๋๊ฒ์ ์คํ๋ง์ ๊ธฐ๋ฅ์ด์ง ์๋ฐ ์์ฒด์ ๊ธฐ๋ฅ์ด ์๋๋ค.
์คํ๋ง๋น์ ๋ผ์ดํ์ฌ์ดํด
๊ฐ์ฒด ์์ฑ -> ์์กด๊ด๊ณ ์ฃผ์ ์์ผ๋ก ์ผ์ด๋๋ค.
์คํ๋ง๋น์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , ์์กด๊ด๊ณ ์ฃผ์ ์ด ๋ค ๋๋ ๋ค์์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ์์๋ ์ค๋น๊ฐ ์๋ฃ๋๋ค.
์คํ๋ง ์ปจํ ์ด๋ ์์ฑ > ์คํ๋ง ๋น ์์ฑ > ์์กด๊ด๊ณ ์ฃผ์ > ์ด๊ธฐํ ์ฝ๋ฐฑ > ์ฌ์ฉ > ์๋ฉธ์ ์ฝ๋ฐฑ > ์คํ๋ง ์ข ๋ฃ
์ด๊ธฐํ ์ฝ๋ฐฑ : ๋น์ด ์์ฑ๋๊ณ ๋น์ ์์กด๊ด๊ณ ์ฃผ์ ์ด ์๋ฃ๋ ํ ํธ์ถ
์๋ฉธ์ ์ฝ๋ฐฑ : ๋น์ด ์๋ฉธ๋๊ธฐ ์ง์ ์ ํธ์ถ
๊ฐ์ฒด์ ์์ฑ๊ณผ ์ด๊ธฐํ๋ฅผ ๋ถ๋ฆฌ ํด์ผํ๋ค.
๋น๋ฑ๋ก, ์ด๊ธฐํ / ์๋ฉธ
implements InitializingBean, DisposableBean
๋จ์
์คํ๋ง ์ ์ฉ ์ธํฐํ์ด์ค์ด๋ค๋ณด๋, ์คํ๋ง์ ์์กด์ ์ผ๋ก ์ค๊ณ๋๋ค
์ด๊ธฐํ, ์๋ฉธ ๋ฉ์๋์ ์ด๋ฆ์ ๋ณ๊ฒฝํ ์์๋ค
๋ด๊ฐ ์ฝ๋๋ฅผ ๊ณ ์น ์์๋ ์ธ๋ถ๋ผ์ด๋ธ๋ฌ๋ฆฌ์๋ ์ ์ฉํ ์์๋ค.
>>> ์ง๊ธ์ ๊ฑฐ์ ์ฌ์ฉํ์ง์๋๋ค. (์ฐพ์๋ณด๋ฉด 2003๋ ๋์ ๋์จ๊ธฐ์ )
@Bean(initMethod = "init",destroyMethod = "close")
2๋ฒ์งธ ๋ฐฉ๋ฒ์ด๋ค. ๋ ์์ฝ๊ฒ ์ฌ์ฉ๊ฐ๋ฅํ๊ณ , ๋ฉ์๋๋ช ์ ๋ณ๊ฒฝํ ์์๋ ์ฅ์ ์ด ์๋ค.
์คํ๋ง์ ์์กดํ์ง ์์ผ๋ฉฐ, ์ฝ๋๊ฐ ์๋๋ผ ์ค์ ์ ๋ณด๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ฝ๋๋ฅผ ๊ณ ์น ์์๋ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์๋ ์ด๊ธฐํ, ์ข ๋ฃ ๋ฉ์๋๋ฅผ ์ ์ฉํ ์์๋ค.
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
@PostConstruct
public void init() {
connect();
call("์ด๊ธฐํ ์ฐ๊ฒฐ ๋ฉ์ธ์ง");
}
@PreDestroy
public void close() {
disconnect();
}
๋ง์ง๋ง ๋ฐฉ๋ฒ์ด๋ค. ์ด๋ฌํ ์ ๋ํ ์ด์ ์ ์ฌ์ฉํด์ ๋น๋ฑ๋ก ์ด๊ธฐํ, ์๋ฉธ ์ฝ๋ฐฑ์ ์ฌ์ฉํ๋๊ฒ์ด ๊ฐ์ฅ ๊ถ์ฅ๋๋ค.
import๋ถ๋ถ์ ๋ณด๋ฉด ์์์๋ฏ์ด ์คํ๋ง์ ์์กด๋์ง์๊ณ ์๋ฐ ํ์ค์ ๋ฐ๋ฅด๋ ๊ธฐ์ ์ด๋ค.
์คํ๋ง์ด ์๋ ๋ค๋ฅธ์ปจํ ์ด๋์์๋ ์ ์์ ์ผ๋ก ๋์ํ๊ณ ์ปดํฌ๋ํธ์ค์บ์์๋ ์๋์ํ๋ค.
ํ์ง๋ง..! ์ธ๋ถ๋ผ์ด๋ธ๋ฌ๋ฆฌ์๋ ์ ์ฉํ์ง ๋ชปํ๋ค. ์ด๋๋ 2๋ฒ์งธ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ฉด ๋๋ค.