일단 내가 깨닯은 핵심만 짧게 언급한다. 자세한 기술적 설명은 생략.
Spring AOP의 원리에 대해 공부하면서 그 깨닮은 것이지만,
Proxy - AOP
|
Reflection -> Casting -> Interface
|
Lazy Loading,Realtime Instance
자바에는 C및 다른 언어에 없는 특별한 기능이 하나 있는데 그것이 Reflection이다.
Reflection은 클래스의 이름(name space)으로부터 클래스의 정보를 취득하고 그 인스턴스를 생성하는것이다.
말은 간단하지만 사실 이 기능은 수많은 자바만의 기술을 파생하게 되는데,
예를들면 XML에 설정한 클래스 이름으로 클래스를 생성하며
Proxy클래스를 클래스를 생성하고 생성 전후에 필요한 로직을 넣을수있으며(AOP)
beans의 변수명의 정보만을 가지고 getter,setter메소드를 생성하여 접근할수 있으며
클래스의 Method정보를 분석하여 원하는 메소드만을 실행할수 있으며(Junit의 testMethod)
클래스의 로딩을 최대한 늦춰서 운용중인 프로그램의 내용을 바꿀수가 있다.(JSP)
이 기술을 사용하기 위해서는 로딩된 클래스의 정보가 필요한데, 실제 클래스를 만들기전에
Interface를 활용해 동작에 필요한 메소드 정보만을 캐스팅 해 미리 프로그래밍(Interface programming)
할수 있다.
Spring AOP의 원리에 대해 공부하면서 그 깨닮은 것이지만,
Proxy - AOP
|
Reflection -> Casting -> Interface
|
Lazy Loading,Realtime Instance
자바에는 C및 다른 언어에 없는 특별한 기능이 하나 있는데 그것이 Reflection이다.
Reflection은 클래스의 이름(name space)으로부터 클래스의 정보를 취득하고 그 인스턴스를 생성하는것이다.
말은 간단하지만 사실 이 기능은 수많은 자바만의 기술을 파생하게 되는데,
예를들면 XML에 설정한 클래스 이름으로 클래스를 생성하며
Proxy클래스를 클래스를 생성하고 생성 전후에 필요한 로직을 넣을수있으며(AOP)
beans의 변수명의 정보만을 가지고 getter,setter메소드를 생성하여 접근할수 있으며
클래스의 Method정보를 분석하여 원하는 메소드만을 실행할수 있으며(Junit의 testMethod)
클래스의 로딩을 최대한 늦춰서 운용중인 프로그램의 내용을 바꿀수가 있다.(JSP)
이 기술을 사용하기 위해서는 로딩된 클래스의 정보가 필요한데, 실제 클래스를 만들기전에
Interface를 활용해 동작에 필요한 메소드 정보만을 캐스팅 해 미리 프로그래밍(Interface programming)
할수 있다.