在另一个bean中使用一个bean(组件)中的方法是否正确?

时间:2019-10-25 07:19:32

标签: spring spring-boot

主要是关于应用程序体系结构的问题。

我们有服务层(@Service HelloService)和bean,它们使用服务方法(@Component HelloBean,并自动连接了HelloService)。服务中有许多方法,HelloBean将来自服务的许多方法汇总为一个方法。因此,我们使用这种单一方法。

我们还有另一个bean(@Component GoodbyeBean)。而且我们想使用HelloBean中的单个方法,并且应该在GoodbyeBean中自动装配HelloBean以使用此方法。

在一个bean中使用另一个bean是正确的,还是我们应该提供一些新服务(例如@Service GoodbyeService)并重复HelloService中的所有代码?或者我们应该在GoodbyeBean中自动装配HelloService,并重复HelloBean中的所有代码?

我意识到,Spring IoC包含所有这些组件,我们可以在整个Spring上下文中使用所有这些组件。

什么是正确的方法?

2 个答案:

答案 0 :(得分:1)

我认为您不应该在GoodByeBean中调用HelloBean,因为顾名思义,它是彼此相反的,并且会对其他人产生很大的误导。

如果HelloBean和GoodbyeBean中有一些通用代码,则将其移到新服务中可能称为GreetingService,然后从HelloBean和GoodbyeBean中调用该方法

答案 1 :(得分:1)

如果要调用的HelloBean方法调用了HelloService的几种方法,则最好从GoodByeBean调用这些方法,或者如果代码或任何内容均未更改,则最好使用HelloBean并调用相同的方法。

如果还有其他方法没有调用我们之前考虑的方法,那么我想从GoodByeBean调用HelloBean的方法是可以的。有时可能不得不从同一逻辑层调用方法。

或者按照@Ankita Agrawal的建议,将方法复制到另一个类中,然后从HelloBean和GoodByeBean中调用该方法。