【Spring】实现ApplicationListener接口,为什么会多生成一个实例?
有两个类Test和ClassA如下
Test
ClassA
Spring配置文件片段
控制台输出:
Test只持有一个ClassA实例,但实际上Spring创建了两个ClassA实例。
当ClassA不实现ApplicationListener接口时,控制台输出看到只生成一个ClassA
请问:为什么实现ApplicationListener之后会多生成一个ClassA实例?这个“没用的”ClassA实例哪里去了?谁会需要这个多余的实例啊?
请指点,谢谢!
Test
package temp;
import ..........
.................
public class Test {
private ClassA a = null;
public Test() { super(); }
public void setA(ClassA arg) {
this.a = arg;
System.out.println("Test - My a's HashCode is " + this.a.hashCode());
}
public ClassA getA() {
return (this.a);
}
}
ClassA
package temp;
import ..........
.................
public class ClassA implements AppclicationListener {
public ClassA() {
super();
System.out.println("ClassA - HashCode: " + this.hashCode());
}
public void onApplicationEvent(ApplicationEvent arg0) { }
}
Spring配置文件片段
<beans>
<bean class="test.Test">
<property name="a" ref="a" />
</bean>
<bean id="a" class="test.ClassA" scope="prototype" />
</beans>
控制台输出:
ClassA - HashCode: 23473608
ClassA - HashCode: 16821027
Test - My a's HashCode is 16821027
Test只持有一个ClassA实例,但实际上Spring创建了两个ClassA实例。
当ClassA不实现ApplicationListener接口时,控制台输出看到只生成一个ClassA
ClassA - HashCode: 26250401
Test - My a's HashCode is 26250401
请问:为什么实现ApplicationListener之后会多生成一个ClassA实例?这个“没用的”ClassA实例哪里去了?谁会需要这个多余的实例啊?
请指点,谢谢!
...全文
相关推荐
Spring ApplicationListener监听器用法详解
主要介绍了Spring ApplicationListener监听器用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
SpringMVC事件监听ApplicationListener实例解析
主要介绍了SpringMVC事件监听ApplicationListener实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Spring启动后获取所有拥有特定注解的Bean实例代码
主要介绍了Spring启动后获取所有拥有特定注解的Bean实例代码,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
Spring ApplicationListener的使用详解
主要介绍了Spring ApplicationListener的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
TODO Spring注解驱动开发第38讲——你知道ApplicationListener的用法吗?
TODO Spring注解驱动开发第38讲——你知道ApplicationListener的用法吗?



