Spring的Bean学习

一.在Spring中什么是Bean?
简单来说,被Spring创建和管理的Java对象被称为Bean,这些对象都是POJO.

二.命名Bean

1.Bean通过名称进行区分。
每一个Bean至少有一个名称,如果开发人员没有为其命名,Spring容器将会为其分配一个内部名称。
通过Bean的名称我们可以从其他Bean定义中或者利用显式查找从应用程序代码中引用Bean。在基于XML的配置中,我们可以使用id特性将一个名称分配给一个Bean唯一标识这个Bean。

2.如果想在Bean定义中为其分配多个名称,我们可以使用name特性。
在name特性中,可以使用空格,逗号,分号来分离给定Bean定义的多个名称。而在id特性中却不允许使用诸如逗号,分号的特殊字符。
例如:

<bean name="accountDaoInMemory,accountDao"
      class="com.wiley.beginningspring.ch2.AccountDao" />

除了第一个名称之外,其他名称都被称为别名aliase。除了上面的方式之外,还可以以下面的方式给Bean起别名:

<bean name="accountDaoInMemory"
      class="com.wiley.beginningspring.ch2.AccountDao" />

<alias name="accountDaoInMemory" alias="accountDao" />

三.Bean实例化方法

1.创建一个Bean的常用方法是调用相关类中的一个可用的构造函数。

2.创建Bean的第二个方法是调用可用的静态或实例工厂方法。

四.Bean作用域
我们一般使用bean的scope属性来配置bean的作用域:

1.默认为singleton,意味着这个bean在整个容器的生命周期内只创建这一个Bean实例。

2.第二种为prototype,意味着每当这个bean被需要的时候,都会新建一个实例被注入。

五.延迟初始化
默认情况下,Spring容器会在启动阶段创建Bean。
如果存在大量的Bean定义或者一些特殊的Bean,那么初始化可能会降低启动速度。

Spring支持延迟Bean初始化,如果我们将Bean配置为延迟创建,那么容器将会延迟Bean的创建,直到真正需要时才创建。

在基于XML的配置中,可以在< bean >元素中使用lazy-init特性将Bean定义为延迟,如果想在一个XML文件中将所有Bean定义为延迟,我们可以使用default-lazy-init特性。
例子:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:context="http://www.springframework.org/schema/context"
   xsi:schemaLocation="
   http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans.xsd"
   default-lazy-init="true">

<!-- 配置bean -->
<bean id="helloworld" class="com.yanjiadou.spring.study.HelloWorld"
 lazy-init="false">
  <property name="name" value="Spring"></property>
</bean>

</beans>

延迟Bean创建的优点是加快了容器的启动时间,并且占用较少的内存量。但我们也要接受这样做带来的缺点。

猜你喜欢

转载自blog.csdn.net/c1776167012/article/details/106361927
今日推荐