方法1
以下方法适用于容器启动时读取一些自己定义的配置文件内容
自己写一个listener(如 TestContextLoaderListener) 继承 ContextLoaderListener
web.xml里的listener配置由
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
改成
<listener>
<listener-class>com.zw.TestContextLoaderListener</listener-class>
</listener>
一下是ContextLoaderListener源码
/* * Copyright 2002-2009 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.web.context; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; /** * Bootstrap listener to start up and shut down Spring's root {@link WebApplicationContext}. * Simply delegates to {@link ContextLoader} as well as to {@link ContextCleanupListener}. * * <p>This listener should be registered after * {@link org.springframework.web.util.Log4jConfigListener} * in <code>web.xml</code>, if the latter is used. * * @author Juergen Hoeller * @since 17.02.2003 * @see org.springframework.web.util.Log4jConfigListener */ public class ContextLoaderListener extends ContextLoader implements ServletContextListener { private ContextLoader contextLoader; /** * Initialize the root web application context. */ public void contextInitialized(ServletContextEvent event) { this.contextLoader = createContextLoader(); if (this.contextLoader == null) { this.contextLoader = this; } this.contextLoader.initWebApplicationContext(event.getServletContext()); } /** * Create the ContextLoader to use. Can be overridden in subclasses. * @return the new ContextLoader * @deprecated in favor of simply subclassing ContextLoaderListener itself * (which extends ContextLoader, as of Spring 3.0) */ @Deprecated protected ContextLoader createContextLoader() { return null; } /** * Return the ContextLoader used by this listener. * @return the current ContextLoader * @deprecated in favor of simply subclassing ContextLoaderListener itself * (which extends ContextLoader, as of Spring 3.0) */ @Deprecated public ContextLoader getContextLoader() { return this.contextLoader; } /** * Close the root web application context. */ public void contextDestroyed(ServletContextEvent event) { if (this.contextLoader != null) { this.contextLoader.closeWebApplicationContext(event.getServletContext()); } ContextCleanupListener.cleanupAttributes(event.getServletContext()); } }
我们要重写 contextInitialized这个方法
public void contextInitialized(ServletContextEvent event) { super.contextInitialized(event); //加入自己的操作 }
方法2
让你的service实现ApplicationListener接口
在onApplicationEvent(E event)方法中 写你自己的操作
ContextRefreshedEvent 这个时间是bean初始化后调用的
onApplicationEvent(ContextRefreshedEvent event){
//加入自己的操作
}
也可以这么写
onApplicationEvent(ApplicationEvent event){
if(event instanceof ContextRefreshedEvent){
//加入自己的操作
}
}
event事件介绍
ContextStoppedEvent context停止事件
ContextRefreshedEvent context bean加载完事件
ContextStartedEvent context开始事件
ContextClosedEvent context关闭事件
相关推荐
在Spring应用中,Context通常通过`ApplicationContext`接口来实例化,如`ClassPathXmlApplicationContext`或`FileSystemXmlApplicationContext`,这些类用于加载XML配置文件并初始化bean。 创建自定义对象的基本...
Spring Context模块是Spring框架的核心部分,它提供了一个统一的接口来管理应用对象,包括bean的创建、初始化、配置和查找。Context模块使得应用程序可以跨越不同层次和组件,实现松耦合和高可测试性。在Spring中,...
在bean初始化时,`BeanFactory`会根据`BeanDefinition`中的依赖关系,自动将其他bean注入到当前bean的属性中。这种过程称为属性设置,可以通过setter方法、构造函数或者字段注入实现。源码中的`...
### Spring的IoC容器初始化源码解析 #### 一、Spring框架的核心——IoC容器 Spring框架是一个开源的轻量级Java开发框架,其核心功能是IoC(Inversion of Control,控制反转)容器和AOP(Aspect Oriented ...
在Spring MVC框架中,应用程序启动时会执行一系列初始化操作,这些操作对于理解Spring MVC的工作原理至关重要。本篇文章将深入探讨Spring MVC启动时初始化的几个常用方法,并解释它们在实际开发中的作用。 首先,...
例如,通过`@Autowired`注解可以自动装配所需的bean,而`@PostConstruct`和`@PreDestroy`则用于标记初始化和销毁方法。同时,Spring的事件驱动模型(Event-driven Model)也在这里发挥了作用,允许组件之间以非侵入...
1. **Bean管理**:Spring Context提供了基于XML、注解和Java配置的三种方式来定义和管理Bean,包括Bean的生命周期管理(初始化、销毁方法)、依赖注入(DI)以及AOP(面向切面编程)支持。 2. **事件传播**:Spring...
在Spring中,Context XML配置文件是初始化和管理应用程序上下文的关键,它定义了bean的创建、依赖关系以及服务的提供方式。本文将深入探讨Spring工程的初始化模块与基础配置,以及如何利用Maven构建这样的工程。 ...
2. **依赖注入**:根据配置信息,Spring Context自动完成对象的实例化、初始化和装配,以及对象间的依赖关系。 3. **服务定位**:通过Spring Context,可以方便地获取到容器中的任何Bean,实现服务的查找和调用。 4....
在Spring Boot应用开发中,初始化器扮演着重要的角色,它们负责在应用程序启动时执行特定的配置或设置。本文将深入探讨Spring Boot初始化器的三种定义方式及其执行过程。 首先,让我们来看第一种定义初始化器的方式...
在Spring框架中,`<context-param>` 和 `<init-param>` 是两种不同的参数配置方式,它们在Web应用的初始化阶段起着关键作用。了解这两者的区别是优化和理解Spring应用程序运行时行为的重要知识点。 首先,`<context...
5. `init-method`和`destroy-method`:指定bean初始化和销毁时要调用的方法。 6. `<import>`:引入其他配置文件,方便模块化和复用。 7. `<context:component-scan>`:通过注解扫描特定包下的类,自动发现并注册带...
通过XML配置或注解的方式,开发者可以控制bean的生命周期,例如设置初始化方法、销毁方法,或者声明bean的范围(单例、原型等)。 四、依赖注入 依赖注入是Spring的核心特性,ApplicationContext通过读取配置文件...
Spring框架初始化解析是指在使用Spring框架时,如何正确地初始化和加载Spring框架的配置和Bean容器。Spring框架的初始化过程是由Spring容器加载和管理的,通过使用不同的加载方式和Bean生命周期回调方法,来实现对...
在初始化和启动阶段,Spring 会完成 Context 的初始化和启动过程。这个过程都是在 refresh 方法中完成的。在 refresh 方法中,Spring 会做一些准备工作,如创建 BeanFactory、注册 BeanFactoryPostProcessor 等,...
对于需要在bean初始化或销毁时执行特定操作的情况,可以使用`@PostConstruct`和`@PreDestroy`注解,它们分别标识初始化方法和销毁方法。 七、总结 Spring的组件扫描功能极大地提高了Spring应用的灵活性和可维护性...
在Java Web开发中,`org.springframework.web.context.ContextLoaderListener` 是Spring框架的一部分,它负责初始化一个Web应用程序的Spring上下文。这个监听器是基于Servlet容器(如Tomcat、Jetty等)的,当Web应用...
在Spring Boot应用中,自定义初始化器是一种扩展和定制应用程序启动过程的方式。下面将详细介绍三种在Spring Boot中创建自定义初始化器的方法。 ### 第一种:通过`spring.factories`文件 1. **创建配置文件**:在`...
这些文件是搭建SSM(Spring、SpringMVC、MyBatis)项目的基础,通常包括Spring的核心配置、MVC配置以及其他必要的初始化设置。描述中提到的“springmvc执行流程图”则是一个可视化工具,帮助开发者理解SpringMVC框架...
除了初始化和销毁方法,Spring还提供了`InitializingBean`和`DisposableBean`接口,实现了这两个接口的类可以自定义初始化和销毁逻辑。 9. **配置类与`@ConfigurationProperties`** 当需要对Bean进行更复杂的配置...