`

Spring创建一个Bean 耗时

阅读更多
applicationContext中只有一个bean
<bean id="testUnit" class="test.TestUnit" lazy-init="true">
</bean>

通过以下代码,进行测试。

		ApplicationContext context = new ClassPathXmlApplicationContext(
				new String[]{"test/applicationContext.xml"},true);
		
		// bean layz-init=true
		long startTime = System.currentTimeMillis();
		TestUnit testUnit = (TestUnit) context.getBean("testUnit", context
				.getType("testUnit"));
		System.out.println(System.currentTimeMillis()-startTime);
		
		// 使用new创建
		startTime = System.currentTimeMillis();
		testUnit = new TestUnit();
		System.out.println(System.currentTimeMillis()-startTime);
		
		// spring已经实例化bean,获取。
		startTime = System.currentTimeMillis();
		testUnit = context.getBean("testUnit",TestUnit.class);
		System.out.println(System.currentTimeMillis()-startTime);


执行结果:

2010-8-4 14:09:13 org.springframework.context.support.AbstractApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@5ffb18: startup date [Wed Aug 04 14:09:13 CST 2010]; root of context hierarchy
2010-8-4 14:09:13 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from class path resource [test/applicationContext.xml]
2010-8-4 14:09:13 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
信息: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@1d15445: defining beans [testUnit]; root of factory hierarchy
16
0
0


以上可见,spring的beanFactory创造bean的用时,也是不少的。

分享到:
评论

相关推荐

    Java_Springstartupanalyzer生成一个交互式的spring应用程序启动报告,让您了解是什么因素导.zip

    这个工具为开发者提供了一个交互式的报告,详细列出了每个组件和bean的初始化时间,使得性能调优变得更加直观和高效。 在Spring框架中,应用启动过程涉及了多个阶段,包括容器加载、bean定义解析、依赖注入等。...

    Spring 延迟实例化

    但是,如果一个bean的实例化非常耗时或者资源密集,并且在应用运行初期并不一定需要这个bean,那么可以采用延迟实例化的方式。 #### 三、延迟实例化的配置 在Spring中配置一个bean为延迟实例化非常简单,只需要在`...

    spring-mock.jar

    Spring Mock是Spring框架的一个扩展,它允许开发者在测试过程中创建和配置模拟对象,以代替真实的依赖,从而减少测试的复杂性和耦合度。通过模拟对象,我们可以控制测试的输入和预期输出,确保代码在特定条件下的...

    spring3.0jar包

    Spring 3.0作为其一个重要版本,引入了许多新特性和改进,旨在提升开发效率和应用程序的可维护性。在这个压缩包中,包含的是Spring 3.0.0.RELEASE的完整集合,确保与JDK 1.6兼容,对于那些需要在旧环境下运行Spring...

    Spring源码深度解析与注解驱动开发1

    `AnnotationConfigApplicationContext`是Spring 3.0引入的一个类,它允许我们使用Java配置而不是XML来创建和管理bean。通过注解,我们可以直接在类或方法上声明bean的定义,简化了配置过程。 2. 组件添加:在传统的...

    Spring定时任务@Scheduled例子

    `@Scheduled`注解是Spring提供的一个强大工具,用于声明式地配置定时任务,无需编写复杂的线程管理和调度逻辑。在这个例子中,我们将深入探讨`@Scheduled`的用法以及与之相关的`task:scheduler`和`task:executor`。 ...

    BeanMapper:比BeanUtils.copyProperties更快

    一个BeanUtils.copyProperties的小型快速替代。 起因 由于BeanUtils(Spring或Apache Commons)的copyProperties实现是利用反射实现的,它在大量调用时具有比较严重的性能问题。 BeanMapper通过javassist类库实现在...

    Spring Boot 线程池的创建、@Async 配置步骤及注意事项.docx

    `@Async`注解是Spring提供的一个特性,用于标记方法为异步执行,这样可以避免主线程等待耗时的操作,提高系统效率。本文将详细介绍如何在Spring Boot中创建线程池并配置`@Async`,以及需要注意的一些事项。 首先,...

    Day2 尚硅谷Spring学习脑图

    - 在一个Bean内部注入另一个Bean。 - 示例: ```xml &lt;bean id="userService" class="com.atguigu.service.UserService"&gt; &lt;/bean&gt; &lt;bean id="userDao" class="com.atguigu.dao.UserDao"&gt; &lt;/bean&gt; ``` ##...

    最新 spring3.1 完整jar包

    Spring 3.1 是该框架的一个重要版本,引入了许多改进和新特性,为开发者提供了更强大的功能支持。在这个“最新 spring3.1 完整jar包”中,包含了Spring框架的所有核心组件和其他相关模块,确保了开发环境的完备性。 ...

    学习测试spring boot2

    Spring Boot是Java开发领域中一个非常流行的框架,它极大地简化了Spring应用的初始化和配置过程,使得开发者可以更快地构建可生产的微服务和Web应用程序。本教程将深入探讨"学习测试Spring Boot2"的相关知识点,旨在...

    spring boot注解事务+多线程

    当一个方法被这个注解标记时,Spring会自动管理事务的开始、提交或回滚。如果方法中发生任何未捕获的异常,事务将被回滚,确保数据的一致性。例如: ```java @Service public class UserService { @Transactional ...

    spring aop简单例子

    在本文中,我们将深入探讨Spring AOP的基本概念、工作原理以及如何通过一个简单的例子来实现它。 AOP的核心概念包括切面(Aspect)、连接点(Join Point)、通知(Advice)、引入(Introduction)、目标对象...

    对于Spring初学者的学习建议

    虽然这是一个耗时且具有一定难度的过程,但它能够帮助你深入了解Spring的设计思路和架构模式。同时,你还可以尝试对Spring进行扩展,以满足更加复杂的应用需求。 #### 六、Struts + Spring + Hibernate 的组合使用 ...

    spring 中文 文档

    Spring 框架是Java开发领域中的一个核心框架,它为构建高质量的、松散耦合的Java应用程序提供了全面的解决方案。Spring框架以其强大的依赖注入(Dependency Injection, DI)和面向切面编程(Aspect-Oriented ...

    java定时器结合spring

    1. **Spring的`@Scheduled`注解**:这是Spring Framework提供的一个用于创建定时任务的注解。你可以直接在方法上添加`@Scheduled`,并设置定时策略,如固定延迟、固定间隔或者cron表达式。例如: ```java @...

    Spring MVC 4.2.3

    Spring MVC是Spring框架的一个核心模块,专为构建Web应用程序而设计。它提供了模型-视图-控制器(MVC)架构,使开发者能够有效地分离业务逻辑、数据处理和用户界面。在"Spring MVC 4.2.3"版本中,我们看到了一系列的...

    White Paper Spring In Production

    Spring是一个开放源代码的企业级Java应用程序框架,它提供了一个轻量级的容器来管理组件的生命周期。Spring的核心特性包括依赖注入(Dependency Injection, DI)、面向切面编程(Aspect Oriented Programming, AOP)...

    spring其他标签

    Spring管理的对象通常称为bean,一个bean在其生命周期内会经历多个阶段: 1. **Instantiate实例化** - Spring可以通过以下几种方式实例化一个bean: - 构造函数实例化 - 静态工厂方法实例化 - 实例工厂方法实例...

    spring-boot-multithreading.zip_spring boot_多线程

    通过`@Configuration`和`@Bean`注解,我们可以创建一个配置bean,为应用程序提供定制的线程池。 3. `Service`类:在业务层,我们会定义一些服务类,这些类中的某些方法可能标记有`@Async`注解,表示该方法应异步...

Global site tag (gtag.js) - Google Analytics