哪里在使用springbean而不是经典的java对象

b4lqfgs4  于 2021-07-16  发布在  Java
关注(0)|答案(1)|浏览(239)

我最近加入了一家公司,在那里我与spring boot microservices有着广泛的合作。我看到spring对于编写mvc代码以及使用springcloud管理云部署的服务是多么有用。然而,到目前为止,我一直没有意识到为什么我们有时使用 Spring Bean ,有时不使用 Spring Bean 。我不知道如何用 Component 这使得它比简单地示例化一个对象更有用,而传统的方法是我们对它有更多的控制。当我们将对象的控制权交给spring时,它似乎使传递构造函数参数变得更加困难,而且只会使我们不必编写一点锅炉板代码。 new MyObject() . 更令人困惑的是,为什么我们有时会想添加 @Bean 方法转换为配置类,这样我们就可以对对象的创建方式有更多的控制。
如果我们仅仅使用“经典”java设计模式,而不是依赖spring来为我们管理bean,那么我们对对象的灵活性和控制性似乎要大得多。有人能解释一下我遗漏了什么吗?

yshpjwxd

yshpjwxd1#

更让人困惑的是,为什么我们有时会想将@bean方法添加到配置类中,这样我们就可以对对象的创建方式有更多的控制
@Component /@service/@repository和@bean是完全不同的东西,不要混淆这两个。
@Component 用于使用类路径扫描自动检测和配置bean。在带注解的类和bean之间有一个隐式的一对一Map。
所以@component用于元件扫描和自动布线
@bean用于显式声明单个bean,而不是像上面那样让spring自动声明。它将bean的声明与类定义分离,并允许您以您选择的方式创建和配置bean。
你应该什么时候使用@bean?
有时自动配置不是一个选项。什么时候?假设您希望从第三方库连接组件(您没有源代码,因此无法使用@component注解其类),因此无法进行自动配置。

相关问题