ssh2,ApplicationContext.xml配置文件里prototype和singleton的问题
我以前问过别人,告诉我说控制器用prototype,service和dao用singleton
因为service和dao是无状态的,所以用singleton,而控制器却相反这里我不太明白,
1.这里说的“无状态”是指什么?什么才叫“有状态”?
2.为什么控制器要设置为prototype?如果设置成singleton会怎么样?
3.service设置成了singleton,但是service里用到了HashMap(非线程安全),会不会出问题?穷人分不多,还请各位帮帮忙,多谢了

解决方案 »

  1.   


    多重架构的应用 ,Struts的action交给spring来管理,scope 定义成prototype  每次请求对应过来应对应一个action. 服务对象 service dao 不定义 缺省定义singletonbean 里面的 scope 有两种配种,singleton,prototype  singleton是单例的。每次 getBean()的时候拿到的是同一个实例。得到的都是同一个对象 
    prototype 是原型。是一种设计模式,可以想象成每次都创建了一个新的对象。
      

  2.   

    这里的“状态”指的是具有属性性质的成员变量。比如:Student 类中有个 name 字段,这个 name 字段就是“状态”,因为根据每个 Student 对象的不同,其中的 name 也是不同的。
      

  3.   

    如果设置成prototype,那么线程安全问题就不用担心了,每次会产生一个新的实例
    但如过把某个变量,比如name传到service层,那么service层就有了“状态”了,因为每个线程的name是不一样的,而service层设置的是singleton,这样是不是就有问题了?