Java 在由许多子类扩展的超类中自动连接Springbean

Java 在由许多子类扩展的超类中自动连接Springbean,java,spring,autowired,Java,Spring,Autowired,将大量@Autowired bean放在一个超类中有什么坏处吗?这个超类没有用到@Autowired bean,而是用在扩展超类的子类中?您的代码看起来很难看,spring启动可能需要几毫秒的时间,当然这个字段需要更多的内存(Java需要的字段)但除此之外,我不希望出现任何问题 对于“正常”运行时,应该没有影响(内存除外) 我想到10到30个字段,最多10个bean。如果你有很多字段,那么就做一个测试,测量内存和性能影响。不,没有缺点 只需确保不要使用自动连线构造函数,因为支持它们很快就会成为一

将大量@Autowired bean放在一个超类中有什么坏处吗?这个超类没有用到@Autowired bean,而是用在扩展超类的子类中?

您的代码看起来很难看,spring启动可能需要几毫秒的时间,当然这个字段需要更多的内存(Java需要的字段)但除此之外,我不希望出现任何问题

对于“正常”运行时,应该没有影响(内存除外)


我想到10到30个字段,最多10个bean。如果你有很多字段,那么就做一个测试,测量内存和性能影响。

不,没有缺点


只需确保不要使用自动连线构造函数,因为支持它们很快就会成为一件痛苦的事情。

一如既往,这取决于情况。如果所有bean都是单例范围的,那么这应该不是什么大问题,这是“官方路线”

如果bean是请求范围的(例如控制器类),您可能会遇到比您所意识到的更大的问题。也许其中一些依赖项也不是单例的?您可以很容易地为请求范围控制器类的每个实例化构造500个bean,因为您正在构建依赖项及其依赖项等等

现在,由于bean实例化的速度慢得像春天的冰川一样,你确实遇到了一个问题。spring框架的官方路线似乎忽视了这个问题,因为我相信@Bozho会在这个回复的评论中极力辩护。所有这一切显然是因为“网络范围”在Spring2.0中对现有设计进行了重新安装,由于支持的用例数量巨大,这完全是在现有实现的前提下完成的


解决方案是,当然要规范你的依赖关系,不要把它们都放在基类中。如果你懒惰,你可以在Apple上下文中使用它,并在需要时对每个服务使用显式调用GeBeA。当然,这完全违背了Spring的任何设计准则。

你认为有什么不利因素吗?看到缺点了吗?缺点=额外的内存使用,速度下降,等等。不,我现在运行时没有看到任何缺点-我只是想看看是否有其他人遇到过任何问题。我想说没有功能上的缺点,但是有些人可能不喜欢一个只为了让c访问x成员而保存x成员的类希尔德班。