1. ์์ฝ ๋ต๋ณโ
KEY WORD:Bean ๋ถ๋ฆฌ, ์๊ฐ์ฃผ์
SELF-INVOCATION ์ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ 2๊ฐ์ง ์
๋๋ค.
์ฒซ ๋ฒ์งธ ๋ฐฉ๋ฒ์ ์๊ฐ ํธ์ถ๋ ๋งค์๋๋ฅผ ๋ค๋ฅธ ํด๋์ค๋ก ๋ถ๋ฆฌํ์ฌ, ํด๋น ๋งค์๋ ํธ์ถ ์์๋ AOP ๋น ํ๋ก์๊ฐ ํธ์ถ๋๊ฒ ํ๋ ๊ฒ์
๋๋ค.
๋ ๋ฒ์งธ ๋ฐฉ๋ฒ์ ๊ฐ์ ๊ฐ์ฒด ๋ด์ ๋งค์๋๋ฅผ ํธ์ถํ ์, this. ํค์๋๋ฅผ ์ฌ์ฉํ๋ ๋์ ๊ฐ์ฒด ์ด๋ฆ. ์ผ๋ก ์๊ธฐ ์์ ์ ํ ๋ฒ ๋ ์ฃผ์
ํ๋ ๊ฒ์
๋๋ค.
Self-Invocation ๋ฐ์ ์ํฉ
public class Test {
public void methodAB (A a, B b) {
saveA(a);
saveB(b);
}
public void saveA (A a) {
repository.save(A a);
}
public void saveA (B b) {
repository.save(B b);
}
}
๋ฐฉ๋ฒ 1 - ํด๋์ค ๋ถ๋ฆฌ
public class Test {
static final Tool tool;
public void methodAB (A a, B b) {
tool.saveA(a);
tool.saveB(b);
}
}
// ๋ค๋ฅธ ํ์ผ
public class Tool {
public void saveA (A a) {
repository.save(A a);
}
public void saveA (B b) {
repository.save(B b);
}
}
๋ฐฉ๋ฒ 2 - ์๊ฐ ์ฃผ์
public class Test {
static final Test test2;
public void methodAB (A a, B b) {
test2.saveA(a);
test2.saveB(b);
}
public void saveA (A a) {
repository.save(A a);
}
public void saveA (B b) {
repository.save(B b);
}
}
2. ์์ธ ์ค๋ช ๐
3. ๊ผฌ๋ฆฌ ์ง๋ฌธ ๐ก
0