JVM Runtime Data Area 내의 Method Area에 Class, Mehtod, Variable와 같은 클레스의 정보가 저장되는데 클레스 정보를 활용할 수 있도록 도와주는 Library이다.
# 활용 사례
개발을 하다보면 switch, if ~ else if ~ else 와 같이 코딩을 하는 경우가 있다. 개인적으로 이런 코드는 SOLID의 원칙 중 SRP(단일책임원칙)과 OCP(개방폐쇠원칙)을 위반할 확률이 있기 때문에 이런 경우에 상황에 맞게 유동적으로 사용할 수 있다.
그림1그림2
'그림1'은 kafkaMehtodList Class에 methodName과 일치하는 method를 실행시키는 로직이다. 위와 같은 구조로 설계를 하면 토픽이 늘어날 때 마다 해당 토픽에 상응하는 method만 추가해주면 되기 때문에 SRP와 OCP를 위배하지 않는 구조로 작업할 수 있다.
그림3
'그림3'과 같은 경우, 해당 로직을 switch case 구문으로 작성하게 된 케이스인데 case 구문의 로직이 많아지고 복잡해질 수록 유지보수에도 안좋고 기존의 새로운 토픽이나 기능 추가시 기존 소스를 수정해야 하는 경우가 발생하기에 OCP에 위배되는 경우라 유지보수에 좋지 않다!