Lookup Performance
/*
Pro Spring
By Rob Harrop
Jan Machacek
ISBN: 1-59059-461-4
Publisher: Apress
*/
///////////////////////////////////////////////////////////////////////////////////////
//File: lookup.xml
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" >
<beans>
<bean id= "helper" class = "MyHelper" singleton= "false" />
<bean id= "abstractLookupBean" class = "AbstractLookupDemoBean" >
<lookup-method name= "getMyHelper" bean= "helper" />
</bean>
<bean id= "standardLookupBean" class = "StandardLookupDemoBean" >
<property name= "myHelper" >
<ref local= "helper" />
</property>
</bean>
<bean id= "factoryLookupBean" class = "BeanFactoryAwareLookupDemoBean" />
</beans>
///////////////////////////////////////////////////////////////////////////////////////
public interface DemoBean {
public MyHelper getMyHelper () ;
public void someOperation () ;
}
///////////////////////////////////////////////////////////////////////////////////////
public class MyHelper {
public void doSomethingHelpful () {
// do something!
}
}
///////////////////////////////////////////////////////////////////////////////////////
public class StandardLookupDemoBean implements DemoBean {
private MyHelper helper;
public void setMyHelper ( MyHelper helper ) {
this .helper = helper;
}
public MyHelper getMyHelper () {
return this .helper;
}
public void someOperation () {
helper.doSomethingHelpful () ;
}
}
///////////////////////////////////////////////////////////////////////////////////////
public abstract class AbstractLookupDemoBean implements DemoBean {
public abstract MyHelper getMyHelper () ;
public void someOperation () {
getMyHelper () .doSomethingHelpful () ;
}
}
///////////////////////////////////////////////////////////////////////////////////////
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.BeanFactoryAware;
public class BeanFactoryAwareLookupDemoBean implements BeanFactoryAware,
DemoBean {
private BeanFactory factory = null ;
public void setBeanFactory ( BeanFactory factory ) throws BeansException {
this .factory = factory;
}
public MyHelper getMyHelper () {
return ( MyHelper ) factory.getBean ( "helper" ) ;
}
public void someOperation () {
getMyHelper () .doSomethingHelpful () ;
}
}
///////////////////////////////////////////////////////////////////////////////////////
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.FileSystemResource;
import org.springframework.util.StopWatch;
public class LookupPerformance {
public static void main ( String [] args ) {
BeanFactory factory = new XmlBeanFactory ( new FileSystemResource (
"build/lookup.xml" )) ;
DemoBean abstractBean = ( DemoBean ) factory.getBean ( "abstractLookupBean" ) ;
DemoBean factoryBean = ( DemoBean ) factory.getBean ( "factoryLookupBean" ) ;
testPerf ( abstractBean ) ;
testPerf ( factoryBean ) ;
}
public static void testPerf ( DemoBean bean ) {
StopWatch stopWatch = new StopWatch () ;
stopWatch.start ( "perfTest" ) ;
for ( int x = 0 ; x < 1000000 ; x++ ) {
MyHelper helper = bean.getMyHelper () ;
helper.doSomethingHelpful () ;
}
stopWatch.stop () ;
System.out.println ( "1000000 gets took "
+ stopWatch.getTotalTimeSeconds () + " seconds" ) ;
}
}
LookupPerformance.zip( 1,479 k)
Related examples in the same category