首先,写一个类,继承Beanfactoryaware
public class SpringBeanAware implements BeanFactoryAware {
public static BeanFactory beanFactory;
public void setBeanFactory(BeanFactory beanFactory) {
this.beanFactory = beanFactory;
}
public static Object getBean(String name) {
return beanFactory.getBean(name);
}
public static <T> T getBean(String name, Class<T> clazz) {
return (T)beanFactory.getBean(name);
}
public static boolean containsBean(String name) {
return beanFactory.containsBean(name);
}
}
然后再spring的xml中声明:
<bean id="springBeanAware"
class="com.iris.listener.SpringBeanAware" />
再次,在web.xml中声明监听器:
<listener>
<listener-class>
com.iris.listener.IrisSedaDispatcher
</listener-class>
</listener>
注意:此处如果使用的是spring mvc3,切不可图省事把所有spring配置都和mvc配置放一起,那样将导致监听不到(除非你想加载两次配置~)
监听器的代码如下:
public class IrisSedaDispatcher implements ServletContextListener {
private ServletContext context = null;
public void contextDestroyed(ServletContextEvent event) {
// Output a simple message to the server's console
System.out.println("The Simple Web App. Has Been Removed");
this.context = null;
}
public void contextInitialized(ServletContextEvent event) {
this.context = event.getServletContext();
System.out.println("启动好了我勒个去");
DefaultListableBeanFactory beanregistry = (DefaultListableBeanFactory) SpringBeanAware.beanFactory;
System.out.println("关注factory:" + beanregistry);
RootBeanDefinition define = new RootBeanDefinition(User.class);
PropertyValue username = new PropertyValue("username", "hellokitty");
MutablePropertyValues values = new
MutablePropertyValues(Arrays.asList(username));
define.setPropertyValues(values);
define.setScope(BeanDefinition.SCOPE_SINGLETON);
define.setAutowireCandidate(true);
beanregistry.registerBeanDefinition("usertest", define);
System.out.println((User) beanregistry.getBean("usertest"));
System.out.println("初始化好了");
}
}
然后,你就可以再程序中按如下方法获取到你新注册的bean了:
System.out.println(SpringBeanAware.getBean("statisticsMessageProducer"));
以上。备忘。
注意:以上方法只能用来注册普通的bean,你如果想注册个jms的listener、listenercontain、queue什么的,那么还是放弃吧,除非你想把spring的解析这些东西的源码再写一遍。我就是这么搞了一天最后才发现自己就是个蛋。算吸取教训了。
分享到:
相关推荐
在实际开发中,我们往往需要在应用启动后动态注册Bean,这时候可以利用`BeanFactoryAware`接口和`ApplicationListener`接口。`BeanFactoryAware`接口使得Bean可以被注入`BeanFactory`,而`ApplicationListener`接口...
在Spring框架中,监听器通常通过实现`MessageListener`接口或者使用`@RabbitListener`注解来定义。如果这个类中的bean无法被正确地注入,那么可能是由于配置问题或者依赖注入机制出现了故障。 `BeanUtil.java`可能...
本文将深入探讨如何使用C#的Winform框架结合TCPListener和TCPClient,以及多线程技术,实现客户端与服务器端的聊天模式。此外,我们还将讨论如何通过委托来解决在非UI线程中操作控件时可能引发的异常。 首先,TCP...
JMS与Spring之二(用message listener container异步收发消息) ...通过了解 message listener container 的构成部分和配置方法,我们可以更好地使用 message listener container 实现异步消息监听。
在.NET框架中,C#语言提供了丰富的网络编程接口,其中包括TcpListener和TcpClient类,这两个类是用于实现基于TCP协议的客户端与服务器端通信的核心组件。本篇文章将深入探讨这两个类的工作原理、如何使用以及相关的...
### TcpListener 和 TcpClient 使用总结 #### 一、概述 在C#的.NET框架中,TCP...总之,通过合理地使用 **TcpListener** 和 **TcpClient** 类,可以在C#中轻松地实现TCP/IP通信,这对于开发网络应用程序至关重要。
1. **创建Listener类**:首先,你需要创建一个类并实现`ServletContextListener`接口。这个接口提供了两个方法:`contextInitialized()`和`contextDestroyed()`,分别在Servlet容器启动和关闭时被调用。 ```java ...
Unity 网络 之 TcpListener 实现简单的网络服务器和客户端通讯功能封装(可监听多个客户端) 在Unity中用 TcpClient、TcpListener 两个封装类和 NetworkStream 来实现一个简单的网络通讯 demo 实现原理 1、首先...
本知识点主要关注如何使用C#中的`TcpListener`和`TcpClient`类实现一对多的通讯原型,这将帮助初学者理解如何构建简单的网络通信系统。 首先,`TcpListener`是.NET Framework中用于监听TCP连接的类。它的工作原理是...
Listener帮助我们实现事件驱动的编程,Filter确保数据在传输过程中的安全性和一致性,而工具则提升了开发效率和质量。理解并熟练掌握这些概念,对于成为一个高效的Java Web开发者至关重要。在学习和实践中,不断探索...
本文将深入探讨如何使用C#实现一个简单的TcpListener来支持异步通信,允许多客户端同时连接。 首先,我们需要理解TcpListener类在C#中的作用。TcpListener是.NET Framework提供的一个类,用于监听特定IP地址和端口...
在IT行业中,Listener是一个非常关键的概念,特别是在Java和Web开发领域。Listener是一种接口或类,它们用于监听特定事件的发生,并在这些事件发生时执行相应的处理逻辑。标题中的"listener我的listener listener我...
回到我们的项目"SpringJavaProject",它可能包含了一些示例代码,演示了如何配置和使用ApplicationContext来实现国际化和事件传递。例如,我们可能会有一个`MessageSource`配置,用于加载资源束,以及一个或多个`...
使用 Socket,可以实现网络编程的基本操作,如连接、发送和接收数据。例如: ```csharp Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); s.Connect("www.example.com", ...
由于 TcpListener 默认只能处理一个连接请求,要支持多客户端连接,我们需要在一个新的线程或者使用异步编程模型(如 `BeginAcceptTcpClient` 和 `EndAcceptTcpClient` 方法)来处理每个连接请求,以免阻塞其他...
我们可以在 XML 配置文件中定义 Bean,然后使用 FileSystemXmlApplicationContext 或 WebApplicationContextUtil 来获取 ApplicationContext,最后使用 getBean() 方法来获取我们要的 Bean。 例如,我们可以在 XML ...
尽管Filter和Listener都可以在Web应用中扩展功能,但它们的作用范围和使用场景有所不同: - **作用时机**:Filter是在请求和响应过程中发挥作用,而Listener则是在特定事件(如应用启动、会话变化)时触发。 - **...
@Order主要用于控制切面(@Aspect)、ApplicationListener和CommandLineRunner的加载顺序,而不是普通Bean。对于单例Bean,它们的加载顺序通常由依赖关系和@DependsOn声明决定。 3. 如何控制Bean的加载顺序 3.1 @...
TcpListener则用在服务器端,监听特定IP地址和端口上的连接请求。它使用Start()方法启动监听,AcceptTcpClient()方法用于接收客户端的连接请求。一旦有新的连接,就会返回一个新的TcpClient对象,服务器可以与这个...
状态Bean和消息Bean在实际应用中常常结合使用。例如,一个在线购物系统可能使用状态Bean来跟踪用户的购物车状态,而消息Bean则用于处理后台的订单处理流程,如库存检查、发货通知等。通过这种方式,状态Bean负责与...