ํ ์์ญ์ ๋ก๋๋์ด ์๋ ํด๋์ค ํ์ ์ ๊ฐ์ฒด๋ฅผ ํตํด
ํ๋/๋ฉ์๋/์์ฑ์๋ฅผ ์ ๊ทผ ์ ์ด์์ ์๊ด ์์ด ์ฌ์ฉํ ์ ์๋๋ก ์ง์ํ๋ API
์ปดํ์ผ ์์ ์ด ์๋ ๋ฐํ์ ์์ ์ ๋์ ์ผ๋ก ํน์ ํด๋์ค์ ์ ๋ณด๋ฅผ ์ถ์ถํด๋ผ ์ ์์
=> ํด๋์ค๋ก๋๋ฅผ ํตํด ์ฝ์ด์จ ํด๋์ค ์ ๋ณด๋ฅผ ์ฌ์ฉํ๋ ๊ธฐ์
Class c = Class.forName("ํด๋์ค์ด๋ฆ");
// ๋ฉ์๋
Method[] m = c.getMethods();
// ํ๋
Field[] f = c.getFields();
// ๊ตฌ์กฐ์ฒด
Constructor[] cs = c.getConstructors();
Class[] inter = c.getInterfaces();
Class superClass = c.getSuperclass();
Reflection์ ์ฌ์ฉํด์ ์คํ๋ง์์๋ ๋ฐํ์ ์์ ๊ฐ๋ฐ์๊ฐ ๋ฑ๋กํ ๋น์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๊ฐ์ ธ์ ์ฌ์ฉํ ์ ์๋ค
ex) Spring ํ๋ ์์ํฌ DI, Serialization/Deserialization ๋ผ์ด๋ธ๋ฌ๋ฆฌ
@Component ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ์ฌ ํด๋์ค๋ฅผ ์ปดํฌ๋ํธ๋ก ๋ฑ๋กํ๋ค.
์ปดํฌ๋ํธ ์ค์บ์ ์คํ๋ง์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ํ ๋ ์ง์ ๋ ํจํค์ง์์
@Component ๊ฐ ๋ถ์ ํด๋์ค๋ฅผ ์ฐพ์์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
์ด๋ ์คํ๋ง์ ๋ฆฌํ๋ ์ ์ ์ฌ์ฉํ์ฌ ํด๋์ค์ ์ ๋ณด๋ฅผ ์กฐํํ๊ณ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
์คํ๋ง์์๋ ์์กด์ฑ ์ฃผ์ ์ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด ๊ฐ์ ์์กด ๊ด๊ณ๋ฅผ ๋์จํ๊ฒ ๊ฒฐํฉํฉ๋๋ค.
์์กด์ฑ ์ฃผ์ ์ ์ฌ์ฉํ๋ฉด ๊ฐ์ฒด ๊ฐ์ ์์กด ๊ด๊ณ๋ฅผ ์ค์ ํ๊ธฐ ์ํด ์ง์ ์ฝ๋๋ฅผ ์์ฑํ ํ์๊ฐ ์์ต๋๋ค.
์คํ๋ง์ ๋ฆฌํ๋ ์ ์ ์ฌ์ฉํ์ฌ ์์กด ๊ด๊ณ๊ฐ ํ์ํ ํด๋์ค์ ์์ฑ์๋ฅผ ํธ์ถํ๊ณ ํ์ํ ๊ฐ์ฒด๋ฅผ ์ฃผ์ ํฉ๋๋ค.
์คํ๋ง์์๋ AOP๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ๋ฌ ๋ถ๋ถ์ ๊ณตํต์ผ๋ก ์ ์ฉ๋๋ ๊ธฐ๋ฅ์ ๋ชจ๋ํํ๋ค
AOP๋ ํ๋ก์ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ํต์ฌ ๋ก์ง์ ์คํํ๊ธฐ ์ ๊ณผ ํ์ ๊ณตํต์ผ๋ก ์ํํ ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ค
์ด๋ ์คํ๋ง์ ๋ฆฌํ๋ ์ ์ ์ฌ์ฉํ์ฌ ํ๋ก์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ํ์ํ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ค
| [์๋ฐ] ์ถ์ ํด๋์ค์ ์ธํฐํ์ด์ค์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์ (0) | 2025.03.27 |
|---|---|
| [JAVA] Random vs SecureRandom vs ThreadLocalRandom (0) | 2024.12.26 |
| [์๋ฐ] Collections API : TreeMap (0) | 2024.10.22 |
| [Java] Exception, try-catch-finally, try-with-resources (0) | 2023.12.24 |
| [์๋ฐ] ์ดํฉํฐ๋ธ์๋ฐ : 2. ์์ฑ์์ ๋งค๊ฐ๋ณ์๊ฐ ๋ง๋ค๋ฉด ๋น๋๋ฅผ ๊ณ ๋ คํด๋ผ (0) | 2023.10.17 |