Skip to content

[토비의 스프링] 6.3.2_invocationhandler에 여러개의 부가기능 추가 #110

@taxol1203

Description

@taxol1203

타깃에 데코레이터기 위해 프록시를 적용하는 예제를 보면, Invocationhandler에 부가기능을 추가하여 다이내믹 프록시에서 위 핸들러에 메서드 처리를 요청 하는 방식으로 동작합니다.

예를들어, 예제에서는 UppercaseHandler를 통해 문자열을 대문자로 바꾸어 주는데, 다음과 같은 코드로 동작합니다.

public class UppercaseHandler implements InvocationHandler {
	private Hello target;
	
	public UppercaseHandler(Hello target) {
		this.target = target;
	}

	@Override
	public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
		Object ret = method.invoke(target, args);
		
		if (ret instanceof String && method.getName().startsWith("say")) {
			return ((String) ret).toUpperCase();
		}
		return ret;
	}
}

만약 대문자로 만드는 기능 외에, 소문자로 만드는 기능을 하는 데코레이터 패턴도 만들고 싶다면, invoke 메서드 내에서 조건문을 통해 기능을 구현해야 할까요?

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions