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的用时,也是不少的。
分享到:
相关推荐
这个工具为开发者提供了一个交互式的报告,详细列出了每个组件和bean的初始化时间,使得性能调优变得更加直观和高效。 在Spring框架中,应用启动过程涉及了多个阶段,包括容器加载、bean定义解析、依赖注入等。...
但是,如果一个bean的实例化非常耗时或者资源密集,并且在应用运行初期并不一定需要这个bean,那么可以采用延迟实例化的方式。 #### 三、延迟实例化的配置 在Spring中配置一个bean为延迟实例化非常简单,只需要在`...
Spring Mock是Spring框架的一个扩展,它允许开发者在测试过程中创建和配置模拟对象,以代替真实的依赖,从而减少测试的复杂性和耦合度。通过模拟对象,我们可以控制测试的输入和预期输出,确保代码在特定条件下的...
Spring 3.0作为其一个重要版本,引入了许多新特性和改进,旨在提升开发效率和应用程序的可维护性。在这个压缩包中,包含的是Spring 3.0.0.RELEASE的完整集合,确保与JDK 1.6兼容,对于那些需要在旧环境下运行Spring...
`AnnotationConfigApplicationContext`是Spring 3.0引入的一个类,它允许我们使用Java配置而不是XML来创建和管理bean。通过注解,我们可以直接在类或方法上声明bean的定义,简化了配置过程。 2. 组件添加:在传统的...
`@Scheduled`注解是Spring提供的一个强大工具,用于声明式地配置定时任务,无需编写复杂的线程管理和调度逻辑。在这个例子中,我们将深入探讨`@Scheduled`的用法以及与之相关的`task:scheduler`和`task:executor`。 ...
一个BeanUtils.copyProperties的小型快速替代。 起因 由于BeanUtils(Spring或Apache Commons)的copyProperties实现是利用反射实现的,它在大量调用时具有比较严重的性能问题。 BeanMapper通过javassist类库实现在...
`@Async`注解是Spring提供的一个特性,用于标记方法为异步执行,这样可以避免主线程等待耗时的操作,提高系统效率。本文将详细介绍如何在Spring Boot中创建线程池并配置`@Async`,以及需要注意的一些事项。 首先,...
- 在一个Bean内部注入另一个Bean。 - 示例: ```xml <bean id="userService" class="com.atguigu.service.UserService"> </bean> <bean id="userDao" class="com.atguigu.dao.UserDao"> </bean> ``` ##...
Spring 3.1 是该框架的一个重要版本,引入了许多改进和新特性,为开发者提供了更强大的功能支持。在这个“最新 spring3.1 完整jar包”中,包含了Spring框架的所有核心组件和其他相关模块,确保了开发环境的完备性。 ...
Spring Boot是Java开发领域中一个非常流行的框架,它极大地简化了Spring应用的初始化和配置过程,使得开发者可以更快地构建可生产的微服务和Web应用程序。本教程将深入探讨"学习测试Spring Boot2"的相关知识点,旨在...
当一个方法被这个注解标记时,Spring会自动管理事务的开始、提交或回滚。如果方法中发生任何未捕获的异常,事务将被回滚,确保数据的一致性。例如: ```java @Service public class UserService { @Transactional ...
在本文中,我们将深入探讨Spring AOP的基本概念、工作原理以及如何通过一个简单的例子来实现它。 AOP的核心概念包括切面(Aspect)、连接点(Join Point)、通知(Advice)、引入(Introduction)、目标对象...
虽然这是一个耗时且具有一定难度的过程,但它能够帮助你深入了解Spring的设计思路和架构模式。同时,你还可以尝试对Spring进行扩展,以满足更加复杂的应用需求。 #### 六、Struts + Spring + Hibernate 的组合使用 ...
Spring 框架是Java开发领域中的一个核心框架,它为构建高质量的、松散耦合的Java应用程序提供了全面的解决方案。Spring框架以其强大的依赖注入(Dependency Injection, DI)和面向切面编程(Aspect-Oriented ...
1. **Spring的`@Scheduled`注解**:这是Spring Framework提供的一个用于创建定时任务的注解。你可以直接在方法上添加`@Scheduled`,并设置定时策略,如固定延迟、固定间隔或者cron表达式。例如: ```java @...
Spring MVC是Spring框架的一个核心模块,专为构建Web应用程序而设计。它提供了模型-视图-控制器(MVC)架构,使开发者能够有效地分离业务逻辑、数据处理和用户界面。在"Spring MVC 4.2.3"版本中,我们看到了一系列的...
Spring是一个开放源代码的企业级Java应用程序框架,它提供了一个轻量级的容器来管理组件的生命周期。Spring的核心特性包括依赖注入(Dependency Injection, DI)、面向切面编程(Aspect Oriented Programming, AOP)...
Spring管理的对象通常称为bean,一个bean在其生命周期内会经历多个阶段: 1. **Instantiate实例化** - Spring可以通过以下几种方式实例化一个bean: - 构造函数实例化 - 静态工厂方法实例化 - 实例工厂方法实例...
通过`@Configuration`和`@Bean`注解,我们可以创建一个配置bean,为应用程序提供定制的线程池。 3. `Service`类:在业务层,我们会定义一些服务类,这些类中的某些方法可能标记有`@Async`注解,表示该方法应异步...