为什么我们需要在春启动中使用bean ?



我刚刚开始使用spring boot,我不明白为什么我要使用bean而不是创建自己的对象。我创建的对象和spring创建的对象(bean)之间有什么区别?

我试着制作一个bean,它比创建一个普通对象需要更多的编码,我必须学习如何使用ApplicationContext,getBean等。

我们使用bean主要是为了实现松耦合。当您自己创建对象时,这些对象是紧耦合的。想象一个有几十个甚至几百个类的应用程序。有时我们希望在整个应用程序中共享类的单个实例,有时我们需要为每个用例提供单独的对象,等等。

管理如此多的对象简直是一场噩梦。这时,控制反转就派上了用场。

对象可以从IoC容器中获取依赖项,而不是自己构造依赖项。我们所需要做的就是为容器提供适当的配置元数据。

使用IOC,您可以实现松耦合。

松耦合意味着类大多是独立的。如果类A对类B的唯一了解是类B通过其接口公开的内容,则类A和类B被称为松耦合。为了克服对象之间的紧耦合问题,spring框架借助POJO/P模型使用依赖注入机制,通过依赖注入实现松耦合。例如:如果你换了衬衫,那么你就不会被迫改变你的身体——当你可以这样做的时候,你就有了松耦合。当你不能这样做的时候,你就有了紧密耦合。松耦合的例子有Interface, JMS。

说明松耦合概念的Java程序

public interface Topic
{
void understand();
}
class Topic1 implements Topic {
public void understand()
{
System.out.println("Got it");
}
} class Topic2 implements Topic {
public void understand()
{
System.out.println("understand");
}
} public class Subject {
public static void main(String[] args)
{
Topic t = new Topic1();
t.understand();
}
}

说明:在上面的例子中,Topic1和Topic2对象是松耦合的。这意味着Topic是一个接口,我们可以在运行时注入任何实现的类,我们可以为最终用户提供服务。

希望有帮助。

简短的回答:Spring bean = object.

长话短说:允许Spring将所有对象注入到依赖它们的类中要比创建您自己的IoC容器容易得多。

在这里阅读更多信息:https://docs.spring.io/spring-framework/docs/3.2.x/spring-framework-reference/html/beans.html

@ bean注释基本上是用来定义类对象是的你首创bean下去,需要更多的编码直接创建一个类的对象但你曾经认为假设您已经创建了对象通过使用新的关键字,您已经创建了这个对象在许多地方假设1000个地方,如果你需要改变什么对象,会使你因为你有去所有1000个地方和改变它,但当你使用bean时,你只需要在一个地方做这些改变在其他地方它会自动反射在这种情况下,我们不需要编译你的整个代码这就是为什么我们使用@bean它也将非常有助于使你的代码失耦合

Spring是一个允许使用依赖注入的框架。这意味着框架可以为您构建类实例(bean),您只需声明bean之间的依赖关系。我建议你熟悉依赖注入。

@Bean
public class SuperHeavyService {
// the datasource is build by the framework due to configuration
private Datasource connection;
private HttpClient client;
// 
public SuperHeavyService(Datasource connection, HttpClient client) {
this.connection = connection;
this.client = client;
}
}
@Bean
public class HttpClient {
}

上面的例子向你展示了SuperHeavyService是由框架创建的,框架将使用SuperHeavyService类的构造函数注入所需类型。这是依赖注入。

相关内容