Spring Bean装配

Spring注入

Spring注入是指在启动Spring容器加载bean配置的时候,完成对变量的赋值行为

常用的两种注入方式:

  • 设值注入
  • 构造注入

Bean配置项及作用域

Bean的配置项

  • Id
  • Class
  • Scope
  • Constructor arguments
  • Properties
  • Autowiring mode
  • lazy-initialization mode
  • Initialization/destruction method

Bean的作用域

  • singleton:单例,指一个Bean容器中只存在一份
  • prototype:每次请求(每次使用)创建新的实例,destroy方式不生效
  • request:每次http请求创建一个实例且仅在当前request内有效
  • session:每次http请求创建一个实例且仅在当前session内有效
  • global session:基于portlet的web中有效(portlet定义了global session),如果是在web中,通session

Bean的生命周期

定义

初始化

实现org.springframework.beans.factory.InitializingBean接口,覆盖afterPropertiesSet方法

public class ExampleInitializingBean implements InitializingBean
{
    public void init()
    {
        // do some initialization work
    }
}

配置init-method

<bean id="exampleInitBean" class="examples.ExampleBean" init-method="init">
public class ExampleBean
{
    public void init()
    {
        // do some initialization work
    }
}

销毁

实现org.springframework.beans/factory.DisposableBean接口,覆盖destroy方法

public class ExampleDisposableBean implements DisposableBean
{
    @Override
    public void destroy()
    {
        // do something
    }
}

配置destroy-method

<bean id="exampleInitBean" class="examples.ExampleBean" destroy-method="cleanup">
public class ExampleBean
{
    public void cleanup()
    {
        // do some destruction work
    }
}

配置全局默认初始化、销毁方法

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

Bean的自动装配

  • No:不做任何操作
  • byname:根据属性名自动装配。此选项将检查容器并根据名字查找与属性完全一致的bean,并将其与属性自动装配
  • byType:如果容器中存在一个与指定类型相同的bean,那么将与该属性自动装配;如果存在多个该类型bean,那么抛出异常,并指出不能使用byType方式进行自动配置;如果没有找到相匹配的bean,则什么事都不发生
    原文作者:布still
    原文地址: https://segmentfault.com/a/1190000011440922
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞