Spring中Bean的讲解

本文是Spring-Bean相关基础知识点,欢迎阅读,学习,一起进步。
初识Spring框架请参考:Spring框架基础
Spring-IOC框架请参考:IOC详解
Spring-AOP框架请参考:AOP详解



一.Bean的简介

  • Spring 官方文档对 bean 的解释是:

In Spring, the objects that form the backbone of your application and that are managed by the Spring IoC container are called beans. A bean is an object that is instantiated, assembled, and otherwise managed by a Spring IoC container.

  • 翻译出来

在 Spring 中,构成应用程序主干并由Spring IoC容器管理的对象称为bean。bean是一个由Spring IoC容器实例化、组装和管理的对象。

  • Spring Bean是被实例的,组装的及被Spring 容器管理的Java对象。
  • Spring 容器会自动完成@bean对象的实例化。
  • 创建应用对象之间的协作关系的行为称为:装配(wiring),这就是依赖注入的本质。

  • 小结:①bean是对象,一个或者多个不限定 ②bean由Spring中一个叫IoC的东西管理 ③我们的应用程序由一个个bean构成
    在这里插入图片描述

二.Bean相关配置

  • 如果我们要将类注册给Spring容器进行管理,则需要在applicationContext.xml中通过bean标签进行配置
属性 含义
id/name 用于指定当前bean的key(必须唯一)
class 用来指定类的路径
scope 用于配置对象是否为单例"singleton
autowire 用于设置当前对象的自动装配
init-method 用于指定初始化方法(此方法在Spring容器创建此Bean的对象时调用)
destroy-mehtod 用于指定bean对象销毁时调用的方法
lazy-init 用于设置此bean为懒初始化
  • 子标签:

  • property,用于属性注入配置
  • name 指定属性名
  • value 指定属性值(简单类型和字符串)
  • ref 指定引用类型属性在spring容器中引用的bean的id

  • constructor-arg 用于构造器属性注入,指定构造器参数
  • index 指定构造器参数索引
  • value 指定构造器参数值

三.自动装配

  • 在bean标签中添加autowire="byName"来让spring自动装配,默认不自动装配,还可以在beans标签中添加default-autowire="byName"表示配置文件中所有的bean都可以通过这种方式装配,bean中的default指的是和beans配置一致
<bean id="type" class="com.it.spring.beans.Type">
      <property name="typeId" value="10002"/>

      <property name="typeName" value="Language"/>
</bean>
  <!‐‐
  autowire : 设置对象属性自动装配
  自动装配策略有两种(byName|byType)
      ‐ byName:在spring容器中找到于当前对象属性名相同的bean,注入到此对象的属性
      ‐ byType:在spring容器中找到类型与当前对象的属性类型相同的bean,注入到此对象的属性
  ‐‐>
  <bean id="book" class="com.it.spring.beans.Book" autowire="byName"></bean>

四.Bean的生命周期

  • 我们将类交给Spring管理,Spring帮助我们完成对象的创建及属性的注入、并完成对象管理。
  • 生命周期:Spring容器中对象的创建及销毁的过程。
  • ①如果当前bean没有设置scope,或者设置scope="singleton"
  • 在单例模式的情况下,当初始化spring容器加载applicationContext.xml时就会创建此
    bean对象并存放在Spring容器中;
  • 当通过Spring容器获取此对象时,就直接从Spring容器中取出对象并返回
  • ②如果当前bean设置scope="prototype"
  • 在非单例模式的情况下,Spring容器在初始化时不会创建此bean的对象
  • 当每次通过Spring容器获取此对象时,Spring容器都会重新创建此对象
  • ③如果此bena通过lazy-init="true"设置此bean为“懒加载”,那么无论时bean是否为单例模式,Spring容器初始化时都不会创建此bean的对象。单例模式在第一次获取对象时创建此对象;非单例模式每次获取对象时都重新创建对象。
    在这里插入图片描述

bean生命周期 ?

在这里插入图片描述


  • The best investment for young people is to invest in yourself
    在这里插入图片描述
  • 2020.03.27 来自辰兮的第38篇博客
发布了42 篇原创文章 · 获赞 198 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/weixin_45393094/article/details/105138641