使用spring后,哪些类该用实例注入(DI),哪些类该用new来创建实例?

刚学ssh,问个傻傻的问题,概念不是很清楚,麻烦了,多谢。

使用spring后,哪些类该用实例注入(DI),哪些类该用new来创建实例?是不是所有的实体类(ORM里和数据库表一一对应的类)、业务逻辑类都要做为spring管理的bean来注入到使用它们的程序里呢?如果这样的话,岂不是几乎所有自己(或自己公司)写的类都要用spring生成实例注入了么?
你们的项目有多大,是哪方面的(MIS/ERP/OA/WEB...),自己(或自己公司)写的类大概有百分之几的场合要用实例注入(DI),百分之几的场合用new来创建实例?

另外,有本书上说“Spring AOP只支持Spring bean中的方法通知...Spring AOP的目标是与Spring的依赖注入功能良好地集成...”,是不是要用spring AOP,被切入者要用spring
对使用它们的类进行实例注入?如果是这样的话,要想给将来留下足够实现AOP的机会,岂不是要尽可能用实例注入来替代几乎所有的new?
那 AspectJ 呢?是不是也只能对Spring bean进行切入?能对java程序中的任意类的任意方法或字段进行切入么?
好的话,加分呀。

首先说spring管理的类,就是spring在启动的时候,在spring容器中,由spring给你创建的,也就new的,spring会帮你维护。一般都是单例的,也就是一个对象。
需要自己new的实例,一般是数据实例,比如你要插入一条数据,就需要自己new。因为这些实例,包含数据信息,每个实例都是不同的,当然不能是单例模式的,也就不能使用注入。

然后说:Spring AOP的目标是与Spring的依赖注入功能良好地集成...”
是指spring管理的实例,例如啊,你声明了一个id为user的bean,在aop中,就可以直接使用该id来关联这个实例。

最后:要想给将来留下足够实现AOP的机会,岂不是要尽可能用实例注入来替代几乎所有的new?
spring管理的一般都是逻辑类,是单例,是线程安全的。
当然,逻辑类中可以有数据类,这时候你可以在程序中new
你使用aop,你不是去对一个数据进行aop吧?肯定是针对某个逻辑进行的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-02-06
先回答第一个问题,如果给分,就回答第二个
使用spring作为业务逻辑层的话,建议都使用依赖注入的方式,管理实例,在来上添加annotation的话,不会增加多少代码量,但是可以方便的实例化类。你说的New的方式,我理解就是prototype方式,默认spring的bean是singleton的,即整个作用域内,都只会存在一个实例,但显然在很多时候,比如并发请求响应的情况下,你需要建多个实例,这时候可以声明为prototype形式
第2个回答  2012-01-29
po用new 其他的都注入追问

谢谢 您说的PO 是啥呀 不好意思 基础比较差

第3个回答  2012-01-30
去坛子里问吧。
相似回答