๐ค ๋ฐฐ๊ฒฝ
ํ๋ก์ ํธ์๋ ํ์ฌ์์ ๊ฐ๋ฐํ ์์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋๋ฐ, ์์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํน์ ํด๋์ค์ ๋ฌธ์ ๊ฐ ๋ฐ์ํด์ ์์ ์ด ํ์ํ ์ํฉ์ด ๋ฐ์ํ๋ค. ๊ทธ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ง์ ์์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์๊ฒ ๋์๊ณ ํด๋น ๋ด์ฉ์ ๊ณต์ ํ๊ณ ์ ํ๋ค.
๐ ๋ฌธ์
ํด๋น ์ํฉ์ ์ต๋ํ ๋น์ทํ๊ฒ ์ฌ์ฐํด๋ณด์๋ค.
1. external-lib
external-lib๋ผ๋ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ค.
ํด๋น ๋ชจ๋์๋ ShibaHolic ์ด๋ผ๋ ํด๋์ค๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
public class ShibaHolic {
public void getShibaHolic() {
problem();
System.out.println("์ฑ๊ณต");
}
private void problem() {
System.out.println("๋ฌธ์ ๋ฐ์");
}
}
ShibaHolic ํด๋์ค๋ getShibaHolic() ์ด๋ผ๋ API๋ฅผ ๊ฐ์ง๊ณ ์๋๋ฐ, ๊ฐ๋ฐ ์ค์ธ ํ๋ก์ ํธ์์ ํด๋น API๋ฅผ ์ฌ์ฉํ ๋ problem()์ด ํธ์ถ๋๋ ๊ฒ ๋ฌธ์ ๋ผ๊ณ ๊ฐ์ ํ๋ค.
2. service
<dependency>
<groupId>shiba.holic</groupId>
<artifactId>external-lib</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
์๋น์ค ์ค์ธ ํ๋ก์ ํธ๋ getShibaHolic()์ ์ฌ์ฉํ๊ธฐ ์ํด์ external-lib dependency๋ฅผ ์ถ๊ฐํ๋ค.
public class Blog {
public void getBlog() {
ShibaHolic shibaHolic = new ShibaHolic();
shibaHolic.getShibaHolic();
}
public static void main(String[] args) {
Blog blog = new Blog();
blog.getBlog();
}
}
์๋น์ค ํ๋ก์ ํธ - Blog ํด๋์ค - getBlog() ์์ getShibaHolic()์ ํธ์ถํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น?
๋น์ฐํ๊ฒ problem() ๋ฉ์๋๋ฅผ ๊ฑฐ์น๊ธฐ ๋๋ฌธ์ "๋ฌธ์ ๋ฐ์" ๋ฉ์์ง๊ฐ ์ถ๋ ฅ๋๋ค.
์ด๋ฐ ๊ฒฝ์ฐ "์ฑ๊ณต" ๋ฉ์์ง๋ง ๋ฐ์ผ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น?
๐ ํด๊ฒฐ
ํด๋น ์ํฉ์์ ํ์๊ฐ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋์ผํ ํจํค์ง์ ๊ฐ์ ํด๋์ค๋ฅผ ์ถ๊ฐํ๊ณ ๋ค๋ฅธ ๋ด์ฉ์ ์์ฑํ๋ ๊ฒ์ด๋ค.
์๋น์ค ๋ชจ๋์ ๋์ผํ ํจํค์ง๋ก ๊ฐ์ ํด๋์ค ์ด๋ฆ์ ์ถ๊ฐํ๋ค.
public class ShibaHolic {
public void getShibaHolic() {
System.out.println("์ฑ๊ณต");
}
}
๊ทธ๋ฆฌ๊ณ ์ฑ๊ณต ๋ฉ์์ง๋ง ์ถ๋ ฅ๋๋๋ก ์์ ํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋ค์ Blog ํด๋์ค๋ฅผ ํธ์ถํ๋ฉด "์ฑ๊ณต" ๋ฉ์์ง๋ง ์ถ๋ ฅ๋๋ค.
๊ฒฐ๋ก
์ด ๋ฐฉ๋ฒ์ ์ ํ์ํ ๊น? ํ์๋ ํด๋น ๋ฐฉ๋ฒ์ ์๊ณ ์์ผ๋ฉด ์ข์ ์ด์ ๋ 2๊ฐ์ง๋ผ๊ณ ์๊ฐํ๋ค.
์ฐ์ , ๊ฐ๋จํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ ์ ํ๋๋ฐ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆด ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
ํ์๊ฐ ์ง๋ฉดํ ์ํฉ์ ์ด์ ํ๊ฒฝ์ด ์๋๊ธฐ ๋๋ฌธ์ ์๊ฐ์ ์ฌ์ ๊ฐ ์์ด์ ๊ด์ฐฎ์์ง๋ง, ์๋น์ค ์ด์ ํ๊ฒฝ์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค๋ฉด ์ด๋ ์๊น? ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ ์ ๊ธฐ๋ค๋ฆฌ๊ธฐ ์ํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฐ๋ฐ ํ์ ์์ ์์ฒญ์ ํด์ ๋ฐฐํฌ๊ฐ ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ฑฐ๋ ์๋๋ฉด ๋ค๋ฅธ ๋ฐฉ๋ฒ (ํธ๋ฒ ๋ฑ)์ ์ด์ฉํด์ผ ํ์ ๊ฒ์ด๋ค.
๊ทธ๋ฌ๋ฉด ๋์ค์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ ์์ผ๋ก ๋ฐฐํฌ๋์ ๋ ํธ๋ฒ์ผ๋ก ์์ ํ ๊ฒ์ ๋ค์ ์๋ณตํด์ผ ๋๋ ๋ฒ๊ฑฐ๋ก์์ด ๋ฐ์ํ๋ค.
๋ง์ฝ ํฌ์คํ ํ ๋ฐฉ๋ฒ์ผ๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ธฐ๋ฅ์ ์์ ํ๋ค๋ฉด? ๊ฐ๋จํ๊ฒ ๋ฎ์ด์์ด ํด๋์ค๋ง ์ญ์ ํ๋ฉด ๋๋ค.
๋ ๋ฒ์งธ๋ก, ํด๋น ํ๋ก์ ํธ์๋ง ๋ฌธ์ ์ผ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ๋ฌธ์ ๊ฐ ๋๋ ๊ธฐ๋ฅ์ด ๊ณผ์ฐ ๋ค๋ฅธ ํ๋ก์ ํธ์์๋ ๋ฌธ์ ๋ก ๋ฐ์๋ค์ผ์ง๋ ์ ์ ์๋ค.
ํน์ ๊ธฐ๋ฅ์ด A ํ๋ก์ ํธ์์๋ ๋ฌธ์ ์ด์ง๋ง, ๋๋จธ์ง B~Z ํ๋ก์ ํธ์์๋ ์์ ํ ๋ ์คํ๋ ค ๋ณ๊ฒฝ์ผ๋ก ์ธํ ์ด์๋ฅผ ๊ณ ๋ฏผํด์ผ ๋ ์๋ ์๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ด์ฉ ์ค ์ผ๋ถ๋ฅผ ๊ฐ๋จํ๊ฒ ์์ ํ ํ์๊ฐ ์์ ๋, ํด๋น ๋ฐฉ๋ฒ์ ๊ณ ๋ คํด ๋ณด๋๋ก ํ์.
๋๊ธ