什么时候spring容器启动?
其实就是程序中执行加载 xml配置文件的时候
- 1.应用程序下加载
ApplicationContext ctx = new ClassPathXmlApplicationContext("testspring2.xml");
- 2.web模式下加载
web.xml:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-hibernate-mysql.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
可以看日志,每次执行new ClassPathXmlApplicationContext(),都会显示下面日志:
程序执行到: new ClassPathXmlApplicationContext("testspring2.xml"); |
2010-5-29 0:48:48 org.springframework.context.support.AbstractApplicationContext prepareRefresh 先刷新ApplicationContext,调用AbstractApplicationContext类的 prepareRefresh 注: AbstractApplicationContext是 ClassPathXmlApplicationContext的父类 public abstract class AbstractApplicationContext extends DefaultResourceLoader implements ConfigurableApplicationContext, DisposableBean { |
信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@bf32c: display name [org.springframework.context.support.ClassPathXmlApplicationContext@bf32c]; startup date [Sat May 29 00:48:48 CST 2010]; root of context hierarchy |
2010-5-29 0:48:48 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions 信息: Loading XML bean definitions from class path resource [testspring.xml] 开始加载spring配置文件,调用xml.XmlBeanDefinitionReader类的loadBeanDefinitions方法进行加载 注意:spring 和 hibernate 常见的错误之一,经常在读取xml文件时出现语法和格式的错误,如DTD错误等.多数是使用者自己在书写xml时犯的语法错误,但也有一些是hibernate和 spring不同版本的BUG |
2010-5-29 0:48:48 org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory 信息: Bean factory for application context [org.springframework.context.support.ClassPathXmlApplicationContext@bf32c]: org.springframework.beans.factory.support.DefaultListableBeanFactory@af8358 2010-5-29 0:48:48 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons 获得缺省的工厂对象,spring缺省的工厂对象是 DefaultListableBeanFactory.preInstantiateSingletons |
信息: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@af8358: defining beans [personServiceBean]; root of factory hierarchy 最后为所有xml文件中定义(以及采用标注方式定义)的bean建立实例 |
相关推荐
spring容器启动和关闭时事件监听;spring容器启动和关闭时事件监听;spring容器启动和关闭时事件监听
Spring 容器启动流程
1. Spring容器的启动流程 2. 循环依赖 3. Spring 中Bean的创建 4. Spring 方法xmind脑图
这样,在Spring容器启动时,它会自动调用`setApplicationContext`方法,将`ApplicationContext`实例注入到实现了`ApplicationContextAware`的类中。 ### 结论 选择哪种方法获取Spring容器主要取决于具体的应用场景...
Spring IOC 容器启动流程分析 Spring IOC 容器是 Java 企业级应用程序的核心组件之一,它提供了一个统一的依赖注入机制,使得应用程序的组件之间能够松耦合。Spring IOC 容器的启动流程是整个 Spring 框架的核心...
然而,在某些情况下,我们可能需要在非Spring注解的类中访问Spring容器中的Bean,或者在这些类中使用YAML配置文件中的配置信息。本篇将详细介绍如何在这样的场景下实现这一目标。 首先,让我们来理解如何在非Spring...
我们可以实现`Lifecycle`接口或`SmartLifecycle`接口,以便在Spring容器启动完成后触发自定义的初始化操作,例如启动Socket服务器。 1. **集成Socket服务**:在Spring中集成Socket服务,我们通常会使用`java.net....
该配置文件定义了一个名为 `ApplicationEventListener` 的 Bean,类型为 `ioc.test.ApplicationEventListener`,当 Spring 容器启动时会自动实例化这个 Bean。 #### 六、事件监听器实现 ```java package ioc.test;...
2. **容器初始化**:当Spring容器启动时,会读取配置信息并构建Bean的定义。这个过程包括解析配置文件、实例化Bean定义、处理依赖注入等。 3. **依赖注入(DI)**:是IOC的核心。Spring容器负责管理Bean的生命周期...
* 在spring容器启动的时候,就会发现错误 * 有可能会造成一些数据长时间驻留在内存中 * lazy-init为"true"当context.getBean时创建 bean为多例时,必须用这种方案创建对象 * 不能及时发现错误 * 数据会在需要...
基于接口、抽象类实现不停机动态调整代码的目的,将修改后的源码文件放置于指定目录下,读取文件后执行动态编译方法,即可将该类重新加载,新的类可以在Spring容器从新注册,且仅在当前窗口生效。如果重启了服务或...
Spring Boot 容器启动流程 Spring Boot 容器启动流程是基于 Spring Cloud 快速搭建的关键步骤之一。今天,我们将深入探讨 Spring Boot 容器启动流程的各个方面。 一、前言 在 Spring Cloud 大行其道的今天,如果...
本章节将详细介绍Spring容器启动时的主要流程及关键步骤。 1. **初始化BeanFactory** - **描述**:首先,根据配置文件实例化`BeanFactory`对象。这一过程通过调用`getBeanFactory()`方法来实现,具体的实现细节则...
### Spring 容器后处理器...`PropertyOverrideConfigurer`是另一个容器后处理器,它允许在容器启动时覆盖已有的属性设置。这在某些场景下非常有用,比如测试环境中需要覆盖生产环境的某些配置值。 配置示例: ```xml ...
当Spring容器启动时,所有实现了ApplicationContextInitializer接口的类都会在容器初始化阶段被调用,允许我们在Spring应用启动前对容器进行必要的配置。 在Spring Boot中,你可以通过实现...
Spring 容器启动时候不创建对象,每次调用 getBean 创建新对象。 对象生命周期管理包括单例对象和多例对象两种。在单例对象时候,创建对象时候执行 init-method 属性指定的方法。关闭容器时候执行 destroy-method ...
这样可以确保 Netty 服务器在 Spring 容器启动后自动运行。 4. **ChannelHandler 配置**: ChannelHandler 是 Netty 中处理网络事件的核心组件。在 Spring 集成中,可以创建一个 ChannelHandlerContext 的工厂类,该...
- **组件扫描**:Spring 容器启动后会扫描指定包下的所有类,如果类前有 `@Component` 等注解,则会将其纳入容器管理。 - **其他相关注解**: - `@Autowired` 和 `@Qualifier`:支持 setter 或构造器注入,用于...