为什么action使用的多例模式,但是service层和dao层用的是单例模式
2017-04-07 15:05
387 查看
使用单例和多例的判定条件是并发访问时会不会对类中公共属性进行修改。如果有可能修改,那就最好用多例,否则会出现各种异常情况。
action中一般会有前端对应的属性,这个一般是action的成员变量,如果是单例访问,所有的访问公用一个action实例对象,当然也公用里面的成员变量和方法,在使用成员变量时就有可能出问题了,比如多个请求同时对同一个属性进行修改,那不就乱了?因此在action层采用多例来避免这种情况的发生,而service中公共属性顶多也就有dao的引用,dao中公共属性也就有对数据库包装类或你自定义类的引用,这个引用通常情况下载项目启动时就已经实例化了,访问时只是使用而已,并不涉及到修改这些公共的操作,因此也就不会出现action中的情况,因此使用单例就行了,这样也可以节省系统资源。
总结就是:
Action要接收request的参数, 你的参数和我的参数不同, 所以不能用单例
Dao中唯一的状态就是连接数据库, 但是这个恰好对大家都是相同的, 所以是单例
Service,
业务逻辑, 里面的成员变量都是Dao, 既然Dao是无状态的, 那么Service也可以认为是无状态的
action中一般会有前端对应的属性,这个一般是action的成员变量,如果是单例访问,所有的访问公用一个action实例对象,当然也公用里面的成员变量和方法,在使用成员变量时就有可能出问题了,比如多个请求同时对同一个属性进行修改,那不就乱了?因此在action层采用多例来避免这种情况的发生,而service中公共属性顶多也就有dao的引用,dao中公共属性也就有对数据库包装类或你自定义类的引用,这个引用通常情况下载项目启动时就已经实例化了,访问时只是使用而已,并不涉及到修改这些公共的操作,因此也就不会出现action中的情况,因此使用单例就行了,这样也可以节省系统资源。
总结就是:
Action要接收request的参数, 你的参数和我的参数不同, 所以不能用单例
Dao中唯一的状态就是连接数据库, 但是这个恰好对大家都是相同的, 所以是单例
Service,
业务逻辑, 里面的成员变量都是Dao, 既然Dao是无状态的, 那么Service也可以认为是无状态的
相关文章推荐
- (十一)外观模式详解(Service第三者插足,让action与dao分手)
- 外观模式详解(Service第三者插足,让action与dao分手)
- ssh中dao、service和action使用心得
- 使用freemarker自动生成dao,service,model,action,jsp
- (亲测有效。)Spring MVC中,Controller中使用service只需使用注解,但是普通类获取 service或 dao 都是null空的。
- 88——小案例,dao,service,action,使用IOC容器创建对象,不是维护在bean内部(8条)
- (十一)外观模式详解(Service第三者插足,让action与dao分手)
- SSH中为什么action需要用多例而dao层和service层为什么就用单例就可以
- (十一)外观模式详解(Service第三者插足,让action与dao分手)
- 设计模式之 外观模式详解(Service第三者插足,让action与dao分手)
- (十一)外观模式详解(Service第三者插足,让action与dao分手)
- (十一)外观模式详解(Service第三者插足,让action与dao分手)
- 简单MVC三层代码生成器:使用Java从数据库反向生成实体类和action、service、dao代码
- (十一)外观模式详解(Service第三者插足,让action与dao分手)
- (十一)外观模式详解(Service第三者插足,让action与dao分手)
- Spring的bean、dao、service、action的生命周期
- 关于使用ssh框架时,pojo、dao、service三层的关系 .
- 中细智能平台成果 ---- 自动生成 Entity,Dao,Service,Action
- 使用模板模式简化DAO操作Hibernate
- Windows Azure Cloud Service (23) 使用Full IIS模式部署多站点和虚拟目录