java共享数据问题:两bean里都有变量引用了同一共bean,共bean里有map,想这两个bean可以共同访问这个map
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java共享数据问题:两bean里都有变量引用了同一共bean,共bean里有map,想这两个bean可以共同访问这个map相关的知识,希望对你有一定的参考价值。
java-spring下开发web,想两个不同的bean里都引用同一个bean对象,这个对象里有一个map类型的数据员,想实现两个不同的bean可以共享访问这个map类型数据。可是读map时,里面为空,为甚么,另外一边的bean再不断往map写数据了。
bean配置
<!-- 数据池 -->
<bean id="datapool" class="com.yjh.datapool.DataPoolImp">
<property name="size" value="100" />
</bean>
<!-- 多用户访问对象 -->
<bean id="cmdAction" class="com.yjh.action.CmdAction" scope="prototype">
<property name="datapool" ref="datapool" />
</bean>
<!-- 服务数据写入对象 -->
<bean id="udpDataMonitor" class="com.yjh.client.udp.UdpDataMonitor" init-method="init">
<property name="datapool" ref="datapool" />
</bean>
即A B 同时都引用了C,这时候如果想数据共享,那么你要在spring里设置这个C为单例
在spring依赖注入配置里bean的作用域
<bean id="role" class="spring.chapter2.maryGame.Role" scope="singleton"/>
默认是单例模式,即scope="singleton"
另外scope还有prototype、request、session、global session作用域
scope="prototype"多例
请采纳哈..追问
datapool 这个bean我没配置scope哦,默认应该可以的啊
追答那就要确认一下,看你那两个bean是否引为同一个
追问怎么确认,配置情况就上面那样了,即使给datapool加上scope="singleton"还是一样的
参考技术A 可以用JAVA多态实现,举个简单的例子比如 t3是公共Bean ,t1和t2是两个不同的bean,
t1中有设置t3的map的方法add
t2用于获取t3的map的方法get
将t1和t2分别继承 t3
使用的时候可以这样
t3 t1=new t1();
t1.add("key","value");
t3 t2=new t2();
System.out.println(t2.get("key"));
这样t1 t2就可以共用t3这个公共bean了 。 参考技术B 同一个bean对象设置成单例吧 参考技术C 请贴出代码
java中变量的分类
以上是关于java共享数据问题:两bean里都有变量引用了同一共bean,共bean里有map,想这两个bean可以共同访问这个map的主要内容,如果未能解决你的问题,请参考以下文章
使用啥数据结构来快速存储文本文件,它有变量号。行数和变量号。在 C++ 中快速添加子元素?
java异常处理:建立exception包,建立Bank类,类中有变量double balance表示存款,Bank类的构造方法能增加存款,Bank类中有取款的发方法withDrawal(doubl