Subscribe

RSS Feed (xml)

Powered By

Skin Design:
Free Blogger Skins

Powered by Blogger

Thursday, November 22, 2007

java code for Hello World With Pointcut

/*
Pro Spring
By Rob Harrop
Jan Machacek
ISBN: 1-59059-461-4
Publisher: Apress
*/


///////////////////////////////////////////////////////////////////////////////////////
public interface IMessageWriter {

public void writeMessage();
}


///////////////////////////////////////////////////////////////////////////////////////
public class MessageWriter implements IMessageWriter{

public void writeMessage() {
System.out.print("World");
}

}

///////////////////////////////////////////////////////////////////////////////////////

import java.lang.reflect.Method;

import org.springframework.aop.MethodBeforeAdvice;
import org.springframework.aop.framework.ProxyFactory;

public class SimpleBeforeAdvice implements MethodBeforeAdvice {

public void before(Method method, Object[] args, Object target)
throws Throwable {
System.out.println("Before method: " + method.getName());
}

}

///////////////////////////////////////////////////////////////////////////////////////

public class ErrorBean {

public void errorProneMethod() throws Exception {
throw new Exception("Foo");
}

public void otherErrorProneMethod() throws IllegalArgumentException {
throw new IllegalArgumentException("Bar");
}
}
///////////////////////////////////////////////////////////////////////////////////////
import org.springframework.aop.framework.ProxyFactory;
import org.springframework.aop.support.DefaultPointcutAdvisor;

public class HelloWorldWithPointcut {

public static void main(String[] args) {

// get proxy
ProxyFactory pf = new ProxyFactory();
pf.addAdvisor(new DefaultPointcutAdvisor(new SimpleBeforeAdvice()));

pf.setTarget(new MessageWriter());
MessageWriter proxy1 = (MessageWriter)pf.getProxy();

pf.setTarget(new MessageWriter());
MessageWriter proxy2 = (MessageWriter)pf.getProxy();
proxy2.writeMessage();

pf.setTarget(new ErrorBean());
ErrorBean proxy3 = (ErrorBean)pf.getProxy();
proxy3.hashCode();

}
}

No comments: