// もともとの処理 public class GreetingImpl implements Greeting { public String greet() { return null; } } // カスタマイズして加える処理 public class GreetInterceptor implements MethodInterceptor { public Object invoke(MethodInvocation invocation) throws Throwable { invocation.proceed(); // もともとの処理を実行する return "Hello"; } }
<components> <component name="greeting" class="xxx.GreetingImpl"> <aspect>greetInterceptor</aspect> </component> <component name="greetInterceptor" class="xxx.GreetInterceptor" /> </components> </code> <緑>設定ファイル(Spring)</緑> <code> <beans> <bean id="greetingTarget" class="xxx.GreetingImpl" /> <bean name="greetInterceptor" class="xxx.GreetInterceptor" /> <bean name="greeting" class="org.springframework.aop.framework.ProxyFactoryBean" > <property name="proxyInterfaces"><value>xxx.Greeting</value></property> <property name="target"><ref bean="greetingTarget" /></property> <property name="interceptorNames"><value>greetInterceptor</value></property> </bean> </beans>
Greeting greeting = (Greeting) container.getComponent("greeting"); long start = System.currentTimeMillis(); for (int i = 0; i < times_; i++) { greeting.greet(); } long end = System.currentTimeMillis(); // end - startを記録