단위 테스트 : 테스트 대상 클래스를 목 오브젝트 등의 테스트 대역을 이용해 의존 오브젝트나 외부의 리소스를 사용하지 않도록 고립시켜서 테스트하는 것
통합테스트 : 두개 이상의 성격이나 계층이 다른 오브젝트가 연동하도록 만들어 테스트하거나, 또는 외부의 DB나 파일 서비스등의 리소스가 참여하는 테스트
프록시 : 클라이언트가 사용하려고하는 실제 대상인 것처럼 위장해서 클라이언트의 요청을 받아주는 것
타깃 or 실체 : 프록시를 통해 최종적으로 요청을 위임받아 처리하는 실제 오브젝트
프록시 사용 목적
- 클라이언트가 타깃에 접근하는 방법을 제어하기 위해
- 타깃에 부가적인 기능을 부여해주기 위해
데코레이터 패턴 : 타깃에 부가적인 기능을 런타임 시 다이나믹하게 부여해주기 위해 프록시를 사용하는 패턴. 다임나믹하게 기능을 부가한다는 의미는 컴파일 시점에서는 어떠한 방법과 순서로 프록시와 타깃이 연결되어 사용되는지 정해져 있지 않다는 뜻. 데코레이터 패턴에서는 프록시가 한개로 제한되지 않는다. 데코레이터는 위임하는 대상에도 인터페이스로 접근하기에 다음 위임대상은 인터페이스로 선언하고 위임 대 상을 외부에서 런타임시 주입받을 수 있도록 만들어야 한다.
프록시 패턴 : 디자인패턴에서는 프록시를 사용하는 방법중에서 탁릿에 대한 접근 방법을 제어하려는 목적을 가진 경우를 가리킨다. 프록시 패턴의 프로시는 타깃의 기능을 확장하거나 추가 하지 않는다. 클라이언트가 타깃에 접근하는 방식을 변경해주는 것이다. 오브젝트의 생성을 늦추는 경우나 원격 오브젝트 이용하는 경우
프록시 기능 2가지
- 타깃과 같은 메소드를 구현하고 있다가 메소드가 호출되면 타깃 오브젝트로 위임한다.
- 지정된 요청에 대해서는 부가기능을 수행한다.
리플랙션 : 다이나믹 프록시는 리플렉션 기능을 이용해서 프록시를 만들어준다. 리플렉션은 자바의 코드 자체를 추상화해서 접근하도록 만든 것이다. 자바의 모든 클래스는 그 클래스 자체 구성정보를 담은 Class 타입의 오브젝트를 하나씩 가지고 있다. 클래스이름.class 나 오브젝트희 getClass() 메소드를 호출하면 클래스 정보를 담은 Class 타입의 오브젝트를 가져올 수 있다. 클래스 오브젝트를 이용하면 클래스 코드에 대한 메타정보를 가져오거나 오브젝트를 조작할 수 있다.
스프링에서 private생성자를 가진 클래스도 빈으로 등록해주면 리플렉션을 이용해 오브젝트를 만들어 준다. 리플렉션은 private으로 선언된 접근 규약을 위반할 수 있다.
invoke() : 리플렉션의 Method 인터페이스를 파라미터로 받는다. 메소드를 호출 할때 전달되는 파라미터도 args로 받는다.
팩토리빈에서 빈 오브젝트가 아닌 팩토리 빈 자체를 가져오고 싶은 경우 & 을 빈앞에 붙여주면 팩토리 빈 자체를 리턴한다.
어드바이스 : 타깃 오브젝트에 적용하는 부가기능을 담은 오브젝트
포인트컷 : 메소드 선정 알고리즘을 담은 오브젝트
어드바이저 = 포인트컷(메소드 선정 알고리즘) + 어드바이스(부가기능)
빈 설정시 $사용하면 스태틱 멤버 크래스 지정, parent 애트리뷰트 사용해서 다른 빈의 설정 상속 받을 수 있다.
포인트컷 표현식 : 포인트컷의 클래스와 메소드를 선정하는 알고리즘을 작성할 수 있는 방법을 제공
포인트컷 표현식은 AspectJ라는 프레임워크에서 제공하는 것을 가져와 일부 문법을 확장해서 사용한다. 포인트컷은 지시자를 이용해 작성한다.
execution([접근 제한자 패턴(생략가능)]
타입패턴(리턴값의 타입패턴)
[타입패턴(패키지와 클래스 이름에 대한 패턴, 생략가능하며 사용할때는 '.'을 두어 연결 시켜야 한다.).]
이름패턴 (타입패턴 | "..",...)[throws 예외 패턴])
에스펙트 : 애플리케이션의 핵심기능을 담고 있지는 않지만, 애플리케이션을 구성하는 중요한 한 요소이며, 핵심기능에 부가되어 의미를 갖는 특별한 모듈이다.
'IT > Spring' 카테고리의 다른 글
SSH 연결하기 (0) | 2020.07.27 |
---|---|
토비 스프링 - AOP, 트랜잭션 용어 (0) | 2019.11.07 |
토비 스트링 - 트랜잭션 (0) | 2019.11.01 |
토비 스프링 - 예외 (0) | 2019.10.28 |
토비 스프링 - 템플릿 / 콜백 (0) | 2019.10.23 |
댓글