Spring IOC Bean Lookup Performance
|
|
|
|
|
//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");
}
}
|
|
|
|
|
|
|
All
api
java
java 6.0
java 7.0
jdbc
jsp
servlet
ejb
jndi
jms
ejb 3.0
j2ee
jee 5.0
jee 6.0
jsf
struts
spring
Hibernate
ajax
JBoss Seam
netbeans
eclipse
ant
xml
maven
dojo
junit
javafx
j2me
log4j
ESB
JBoss
Apache
Quartz
scjp
mysql
oracle
gwt
openjpa
jmx
yui
google-guice
android
JBoss
scwcd 5.0
scjp 1.5
scjp 1.6
scja
scbcd 5.0
|