<listener> <listener-class>com.listener.TestApplicationContextLoaderListener</listener-class> </listener>
public class TestApplicationContextLoaderListener implements ServletContextListener{ @Override public void contextDestroyed(ServletContextEvent servletcontextevent) { System.out.println("调用:TestApplicationContextLoaderListener11"); TestApplicationContext.initTspApplicationContext(WebApplicationContextUtils.getRequiredWebApplicationContext(servletcontextevent.getServletContext())); } @Override public void contextInitialized(ServletContextEvent servletcontextevent) { System.out.println("调用:TestApplicationContextLoaderListener22"); //TestApplicationContext.initTspApplicationContext(WebApplicationContextUtils.getRequiredWebApplicationContext(servletcontextevent.getServletContext())); //或这样也可以 ApplicationContext factory = new ClassPathXmlApplicationContext("classpath*:applicationContext-*.xml"); TestApplicationContext.initTspApplicationContext(factory); } }
import org.springframework.context.ApplicationContext; public class TestApplicationContext { private static ApplicationContext _applicationContext; public static void initTspApplicationContext( ApplicationContext applicationContext) { _applicationContext = applicationContext; } public static Object getBean(String beanid) { Object bean = null; if (null == _applicationContext) { throw new RuntimeException("应用上下文未正常初始化。"); } try { bean = _applicationContext.getBean(beanid); } catch (Exception e) { e.printStackTrace(); } return bean; } }
@RequestMapping(value = "/getBean.do", method = RequestMethod.GET ) public void getBean(HttpServletRequest request){ //获取类的名字 String objName = this.getClass().getName(); //返回bean对象引用 TestBean cacheManager = (TestBean)TestApplicationContext.getBean("testBean"); cacheManager.refBean(); }
<bean id="testBean" class="com.service.TestBean"> </bean>
相关推荐
在你的项目中,可能已经创建了一些自定义的监听器来处理特定的业务逻辑或用户体验需求。 接着,我们讨论JSF转换器。转换器的主要任务是将用户界面(UI)显示的数据与后台bean中的数据之间进行格式转换。这是因为...
这种情况往往发生在客户端频繁地触发会话变化或更新时,会话的监听器会不断产生消息并由消息监听容器处理。如果默认的线程池配置不当,就容易造成线程资源的过度消耗,甚至导致系统资源耗尽。 这个问题的核心是...
6. **自定义事件**:除了Spring内置的事件外,开发者还可以自定义事件类,然后通过ApplicationEventPublisher发布这些事件,对应的监听器接收到事件后进行处理。 7. **配置与注册监听器**:在Spring XML配置文件中...
- **创建**:当容器首次需要访问Bean时,会调用Bean的无参构造函数创建Bean实例。 - **初始化**:可以通过定义初始化方法来执行额外的初始化操作。 - **销毁**:当容器不再需要Bean时,可以调用销毁方法来进行资源...
1. 创建应用监听器并启动 SpringApplication 会从 META-INF/spring.factories 文件中获取监听器,并通过 createSpringFactoriesInstances() 方法实例化成对象返回。 2. 获取命令行参数 SpringApplication 会获取...
为了将这个监听器注册到Spring Boot中,我们可以创建一个`ListenerConfig`类,使用`@Configuration`和`@Bean`注解,然后通过`ServletListenerRegistrationBean`将`MyListener`实例注册为一个bean。 基于注解的监听...
1. **工厂方法**: 在某些情况下,我们可能需要自定义创建Bean实例的过程,这就是工厂方法的作用。通过定义`@Bean`注解的`factoryMethod`属性,我们可以指定一个静态或非静态方法来创建Bean,而不是使用默认的构造...
首先定义一个事件类,然后创建监听器类去实现`ApplicationListener`接口并监听该事件。发布自定义事件时,可以通过`ApplicationContext`的`publishEvent`方法。 ```java // 自定义事件 public class CustomEvent ...
- **调用应用程序(Invoke Application)**:这一阶段处理所有与业务逻辑相关的操作,例如执行事件监听器中的方法、执行管理Bean的方法等。 - **绘制响应(Render Response)**:最后,JSF框架会根据组件树的状态...
通过创建自定义组件,你可以构建符合特定需求的用户界面元素,这些元素可以复用并集成到多个JSF应用程序中。本教程将深入探讨如何在JSF 2.0环境中开发和使用自定义组件。 1. **组件结构**: 自定义组件通常由两...
在Spring中,当一个特定的事件发生时,如bean的初始化或销毁,上下文的启动或关闭等,Spring会通过发布事件(publishEvent)来通知感兴趣的监听器。这背后的关键接口是`ApplicationEvent`和`ApplicationListener`。 ...
实例化是通过调用无参构造函数创建Bean对象,配置则是通过属性注入(setter方法或构造器注入)来设置Bean的依赖。管理状态则是Spring对Bean进行初始化和销毁操作。 Spring提供两种方式来管理Bean的生命周期:编程式...
最后,`finishRefresh()`发布一个`ContextRefreshedEvent`,通知所有监听器Spring容器已经刷新完成。 总结来说,Spring的BeanDefinition装载过程涉及了从XML配置文件解析、BeanDefinition创建、BeanFactory初始化到...
这一步骤读取配置文件,创建bean定义,以及初始化所有的bean。 2. **销毁WebApplicationContext**:在Web应用关闭时,`contextDestroyed()`方法会被调用,用来清理资源,关闭WebApplicationContext,释放所有bean的...
4. **事件**:如果Bean支持事件处理,它可能会包含事件监听器接口和触发事件的方法。 5. **设计模式**:遵循单一职责原则,每个Bean通常只负责一项功能。 在这个特定的"date"标签资源中,我们可能找到一个Java Bean...
Spring 的监听器 ContextLoaderListener 的作用 ContextLoaderListener 是 Spring 框架中的一种监听器,它的主要作用是启动 Web 容器时,自动装配 ApplicationContext 的配置信息。它实现了 ServletContextListener...
为了启用Request作用域,需要在Web应用的配置文件中添加`RequestContextListener`监听器。以下是配置示例: ```xml <listener-class>org.springframework.web.context.request.RequestContextListener ``` ...
监听器可以是任何对象,包括Spring管理的bean或其他组件。 4. **事件监听器注册** 在Spring容器中,监听器通过声明式或编程式的方式进行注册。声明式注册通常是通过在XML配置文件中添加`<bean>`标签,或者在Java...
5. **事件通知**:在某些情况下,容器需要提供一种方式让组件之间可以进行事件通知,比如监听器或回调。 下面,我们以一个简单的自定义IOC容器为例,说明其基本实现: ```java public class CustomIOCContainer { ...