比如两个类层,如dao层和service层,我们通过spring的IOC依赖注入或者接口加单列模式通过工厂方法来连接类层或者别的方式
如UserDao类(dao数据处理层),可以实现IUserDao接口,
而UserService类(业务层)可以实现IUserService接口供action来调用
UserDao和UserService的联系,可以在UserService类中通过定义一个Private IUserDao userDao;
userDao 通过set方法依赖注入或者通过构造方法来实例化,也可以通过工厂模式来取得对象的引用
还有一种就是直接new UserDao实例。想问下这三者的利弊?要是大项目,并发很多的情况下,用单例是否合适。用new是否内存开销太大,影响性能。请大家说说看法。
如UserDao类(dao数据处理层),可以实现IUserDao接口,
而UserService类(业务层)可以实现IUserService接口供action来调用
UserDao和UserService的联系,可以在UserService类中通过定义一个Private IUserDao userDao;
userDao 通过set方法依赖注入或者通过构造方法来实例化,也可以通过工厂模式来取得对象的引用
还有一种就是直接new UserDao实例。想问下这三者的利弊?要是大项目,并发很多的情况下,用单例是否合适。用new是否内存开销太大,影响性能。请大家说说看法。
解决方案 »
- 大家好,java ee学习中,在数据库登录方面有点小疑问,想请教大家
- Hibernate Table 映射大小写敏感问题??
- struts中double,int,string的判断
- 请问各位朋友,关于解析EXCEL文件的问题
- 这个TOMCAT不行,报错如下,指正马上给分
- 请教一个关于Struts-menu的问题.
- 请问从哪可以搞到WebSphere或Weblogic?我想学习一下,多谢了!
- 急!!!在线等 达人请进 急!!!
- 【在线等】急需大牛帮助!
- Uncaught TypeError: Cannot assign to read only property '0' of string
- session
- java文件类型识别
多几个生命周期短的小的 object 不会占多少内存, JVM的垃圾回收可以应付.用单例有的时候在多线程环境中,如果用类变量,会比较危险, 有的时候就new一些实例可能会好一些,具体要看, 一切都要跑起来之后再看
不过我觉得无论是dao层还是service层,无非一个是提供对象化操作数据库的的服务,一个是提供一些业务逻辑的服务,都是像组件一样,基本没有类变量,所以不存在并发的安全问题,当然更可以弄成单例来使用,当然每使用一次就建立个对象也吓不死人。
---------
一家之言啊
用单例时,只要方法中不存在对属性的修改(这会引起线程同步问题),无论多少线程都没有关系。
userDao层和userService一般都没属性值,基本都是方法,所以是不是意味着用后2者在大并发时时线程安全的?如果是 是不是意味着用厚2种好过new
如果不是,用new是不是同样在大并发下会很影响性能
这也就是说你的userService类和userDao类是紧密耦合的
所有都用接口,通过spring构造,你的程序是松耦合的
2、userDao层和userService一般都没属性值,基本都是方法
只要你的方法不去修改当前对象的属性值,这个方法就是线程安全的,单一实例的性能肯定好过new
直接new 对象会造成紧密耦合,如果修改dao实现的话,必须去修改源代码。
而是用spring的话,默认spring就会对bean实行单例。肯定比new很多对象性能要高,单也有限