package com.liuxt.bean;
import junit.framework.TestCase;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.util.StopWatch;
public class ComputerTest extends TestCase {
public static void main(String[] args) {
AbstractApplicationContext ctx = new ClassPathXmlApplicationContext(
new String[] { "bean/ComputerBean.xml" });
ComputerBean computer1=(ComputerBean)ctx.getBean("computer");
ComputerBean computer2=(ComputerBean)ctx.getBean("computer");
System.out.println("computer1===computer2:"+(computer1==computer2));
testGetBeanFromSpring(ctx);
testNewInstaniate();
ctx.destroy();
}
private static StopWatch testGetBeanFromSpring(AbstractApplicationContext ctx) {
StopWatch stopWatch=new StopWatch();
stopWatch.start();
ComputerBean computer=(ComputerBean)ctx.getBean("computer");
for(int i=0;i<100000;i++){
computer=(ComputerBean)ctx.getBean("computer");
computer.sum(i,i);
}
stopWatch.stop();
System.out.println("100000 gets took "+stopWatch.getTotalTimeMillis()+" ms");
return stopWatch;
}
private static void testNewInstaniate() {
ComputerBean computer3;
StopWatch stopWatch=new StopWatch();
stopWatch.start();
for(int i=0;i<100000;i++){
computer3=new ComputerBean();
computer3.sum(i,i);
}
stopWatch.stop();
System.out.println("100000 gets took "+stopWatch.getTotalTimeMillis()+" ms");
}
}
测试的前提条件:
JDK:java version "1.6.0_13"
winxp cpu:2.6Ghz
测试结果:
computer1===computer2:false
100000 gets took 907 ms
100000 gets took 0 ms
不知道为什么差距这么大。
请大家帮忙解释一下啊。。。期待中。
分享到:
相关推荐
这里我们将详细探讨如何在Java中通过Spring获取配置的bean。 1. **BeanFactory与ApplicationContext** - **BeanFactory** 是Spring中最基础的IoC容器,负责管理和实例化Bean。它允许开发者定义Bean的生命周期和...
在测试中,我们可以使用`ApplicationContext`来获取Bean,每次获取到的都是同一个对象。 2. **Prototype作用域**:与Singleton相反,Prototype作用域的Bean每次请求都会创建一个新的实例。这意味着,当你调用`...
在IT行业中,性能测试是衡量软件系统运行效率的重要手段。标题提到的问题——“从bean工厂里单例执行方法效率比new对象执行慢很多”,涉及到Java编程中的两种常见对象管理方式:单例模式和直接实例化。这个现象可能...
本文档中的示例通过外部Spring容器获取指定的实现Bean,并通过Axis2提供服务。这涉及到以下几个关键步骤: **1. 创建服务实现类:** - 开发者需要手动编写WSDL文件和服务实现类,而不是使用Axis2提供的工具(如...
在Spring框架中,HikariCP是一个非常流行的高性能数据库连接池。它被广泛采用,因为它的设计目标是提供极低的资源消耗和超快的连接创建速度。在进行Spring项目开发时,为了确保应用程序能够有效地与数据库交互,我们...
一个SSM项目会包含以下关键部分:src/main/java(存放源代码,包括Spring配置、业务逻辑和服务接口)、src/main/resources(存放配置文件,如Spring的bean配置、Mybatis的Mapper配置)、src/test/java(存放测试用例...
本测试包针对`Druid`与`Spring`的集成进行了详尽的配置,旨在展示如何利用`Druid`进行数据源管理以及监控,同时包含了方法名正则匹配的拦截器配置,以实现更精细的事务管理和性能分析。 `Druid`的主要优势在于其...
同时,Spring社区活跃,开发者可以在论坛、Stack Overflow等平台上获取帮助和分享经验。 总之,Spring 5.2.8是一个全面而稳定的版本,它在各个模块上都进行了优化和增强,为开发者提供了更强大的工具和更流畅的开发...
此外,官方文档和社区论坛也是获取更多Spring知识的好去处。 最后,深入理解Spring源码不仅可以帮助你解决实际开发中的问题,还能让你更好地掌握Java企业级应用的开发技巧,为你的职业生涯增色添彩。因此,花时间...
### TestNG集成Spring知识点详解 ...在集成Spring和TestNG的过程中,只需让测试类继承`AbstractTestNGSpringContextTests`或`...测试而无需手动加载Spring的`ApplicationContext`或使用`BeanFactory`来获取Bean实例...
- **测试模块:** 提供了单元测试和集成测试的支持,方便进行Spring应用的测试。 **1.1-3 节Spring的应用场景** - **Web 应用开发:** Spring MVC 提供了灵活的MVC架构支持,适用于构建各种类型的Web应用。 - **...
它允许你在Spring的bean配置中直接使用Mybatis的SqlSessionFactory和SqlSessionTemplate,从而将Mybatis的Mapper接口直接作为Spring的bean使用。这样,你就可以利用Spring的依赖注入特性来管理和使用这些Mapper,...
- **Web开发**:Spring MVC框架提供了一个简洁的MVC实现,用于构建高性能的web应用程序。 - **数据访问**:Spring提供了JDBC抽象层,以及对ORM框架如Hibernate和JPA的支持,简化了数据库操作。 - **事务管理**:...
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> </bean> ``` 4. **使用连接池**: 对于生产环境,推荐使用连接池,如HikariCP,它提供了高效且稳定的...
- **ResourceLoaderAware接口**:允许Bean获取到ResourceLoader实例。 - **资源作为依赖**:如何将资源注入到Bean中。 - **验证、数据绑定与类型转换** - **使用Spring Validator接口**:Spring提供了一套验证...
6. **Test**:Spring的测试模块提供了对单元测试和集成测试的支持,包括Mock对象、测试注解以及测试上下文框架。 了解这些核心模块后,你需要获取对应的jar包。Spring框架通常由多个jar组成,包括spring-core、...
2. **Spring的FacesContextAware**:Spring提供了一个`FacesContextAware`接口,使得Spring的bean可以获取到JSF的`FacesContext`对象,从而在需要时访问JSF的特性。 3. **Spring的NavigationHandler**:Spring可以...
9. **AOP和切面**:Spring的AOP功能可以用来实现通用的功能,例如日志记录、性能统计等。在MyBatis-Spring整合中,我们可以创建切面来拦截数据库操作,实现这些附加功能。 10. **Spring Boot集成**:如果使用Spring...
它是Spring应用的主要入口,通过它可以获取到所有Bean并进行操作。 四、AOP(面向切面编程) Spring的AOP模块提供了声明式事务管理、日志记录、性能监控等跨切面关注点的实现。AOP通过动态代理技术,在运行时织入...