辽宁省辽宁省建设厅网站,永久免费国外vps无需信用卡,重庆整合网络营销,网站文章被采集Spring的基础组件 一、 什么是Bean及Bean的生命周期二、 什么是依赖注入(DI)与控制反转(IOC)三、 Spring的作用域与生命周期四、 Spring的配置方式(XML与基于注解的配置)五、HelloWorld示例六、结语 欢迎回来各位亲爱的小伙伴#xff01;我们已经滑过Spring的门槛#xff0c;… Spring的基础组件 一、 什么是Bean及Bean的生命周期二、 什么是依赖注入(DI)与控制反转(IOC)三、 Spring的作用域与生命周期四、 Spring的配置方式(XML与基于注解的配置)五、HelloWorld示例六、结语 欢迎回来各位亲爱的小伙伴我们已经滑过Spring的门槛现在我们要深入学习Spring框架中的基础组件。抓紧坐稳让我们开始本次的知识之旅
一、 什么是Bean及Bean的生命周期
在Spring大家庭中Bean就像是家中的重要一员。何为Bean呢Bean相当于是普通Java类的兄弟这个兄弟有点特别他被Spring容器创建、管理并且他还决定了他们的生命周期。生命周期这个好听的词就像是一部好莱坞大片其实也差不多。Bean的生命周期中包含了实例化、初始化、使用以及销毁等步骤。养成良好的生活习惯了解清楚他们的生命周期这样Bean们才能更好地为我们服务。
我们前面已经提到Bean在Spring框架中扮演了一个重要的角色。它们是Spring框架的基本组成块。如同世间万物一样Bean有自己的生命周期下面是一个具体的例子 实例化Instantiation: Bean开始它的生命周期。比如我们可以通过构造器Constructor或工厂方法Factory method来实例化一个Bean。
public class HelloWorld {private String message;//Getters and Setters
}初始化Initialization: 一旦Bean被实例化它就会通过Spring的依赖注入DI机制进行初始化。 使用Usage: 当所有的初始化都完成以后Bean就可以被应用程序使用了。 销毁Destruction: Bean的生命周期结束Spring容器将调用Bean的销毁方法。 我们可以通过覆盖Bean的PostConstruct和PreDestroy方法来在生命周期的不同阶段进行一些自定义操作。
二、 什么是依赖注入(DI)与控制反转(IOC)
别被这些专业术语吓破胆虽然他们俩是Spring中重要的两个概念其实很easy了。 依赖注入DI顾名思义就是把依赖的东东注入到需要的组件中。想象一下你在厨房做饭现在需要用到水你可以自己到井里打水但是这明显不现实。然后你想到了水龙头打开水龙头就有水了水龙头就像Spring把需要的东西比如服务、组件等送到你手里这就是依赖注入。
说完DI就不得不说说它的好朋友控制反转IOC。IOC其实是DI的另一种表达把本来由我们自己来控制的东西交给别人来处理使用对象时原本需要new出来现在不用了直接从spring取相当于是把控制权从自己手中反转给了别人这就叫控制反转。DI和IOC都是Spring用来把活动分配给Java中的各个角色的方式。
让我们用一个实例来理解依赖注入(DI)的概念。假设我们有一个TextEditor类和一个SpellChecker类。在没有Spring的情况下我们可能这样使用它们
class TextEditor {private SpellChecker checker;public TextEditor() {this.checker new SpellChecker();}
}但Spring提倡“不要找依赖依赖就应该找到你”。所以使用Spring和DI我们的代码如下
Component
class TextEditor {private SpellChecker checker;Autowiredpublic TextEditor(SpellChecker checker) {this.checker checker;}
}这就是DI的力量。它让TextEditor“逃脱”了创建SpellChecker实例的繁琐。
三、 Spring的作用域与生命周期
我总是告诫大家每个Bean都是个有生命的实体他有自己的生命周期包括出生、成长、成熟和消亡。同样的Spring容器也是如此。它为内部的Bean提供了六种作用域
Spring容器给我们提供了这么多选择那么我们就需要根据实际情况来仔细考虑当我们的Bean应该属于哪种作用域多数情况下都是使用默认作用域 singlton单例模式偶尔会使用 prototype原型模式其他四个作用域用的较少。
关于Spring的作用域让我们具体解释一下并提供一个例子。假设我们有一个名为shoppingCart的Bean它的作用域为session。那么每个用户会话都将有其自己的shoppingCart实例。如果将作用域改为singleton那么所有的用户会话将共享同一个shoppingCart实例这是不合理的。
Configuration
public class AppConfig {BeanScope(prototype)public ShoppingCart shoppingCart() {return new ShoppingCart();}
}四、 Spring的配置方式(XML与基于注解的配置)
Spring对Bean的管理支持两种方式XML与注解的方式本着能简单就不要复杂现在多数都 不想写一堆繁琐的XML配置文件而是使用注解的方式通过简简单单的一行注解就可以完成很多复杂的事情。相比之下XML配置方式虽然看起来难度较大但实际上在某些场合如需要集中管理大量的配置信息或配置改动频繁的时候使用XML则有更好的维护性和稳定性。
最后让我们看一个基于XML和基于注解的配置的例子。假设我们要注册一个名为teaStore的Bean。
bean idteaStore classcom.example.TeaStore/这是XML方式的配置而在注解配置方式下
Configuration
public class AppConfig {Beanpublic TeaStore teaStore() {return new TeaStore();}
}五、HelloWorld示例
1、创建项目并引入spring依赖
2、创建HelloWorldService并交给Spring管理 3、在main方法中从Spring中获取helloWorldService Bean并调用其方法输出
六、结语
通过本章的学习和实践我想你已经明了Spring中的Bean的生命周期关键是如何使用同时依赖注入和控制反转又是如何帮助我们简化编程的还有那些作用域和配置方式又是如何影响我们的编程的。我期待你在接下来的学习中能够把这些知识应用到实践中去让这些理论知识转变为你解决问题的有力武器。