Spring Bean 作用域以及三种xml基本注入方式总结

Spring Bean 作用域

默认提供5中作用域

  1. singleton(默认)
    Spring的ApplicationContext容器在启动时候,自动实例化所有的singleton的bean并缓存于容器当中。
  2. prototype
    每次从容器调用bean时候,都会返回一个新的实例,每次调用getBean()时相当于执行new Bean()的操作。

当用户使用Spring的 WebApplicationContext时,还可以使用另外3中Bean的作用域,即request,sessionglobalSession

Spring Schema配置格式

Spring1.0采用DTD格式

  
  

dtd 声明,表示该XML里元素和属性等符合spring-beans-2.0.dtd这个文档类型定义标准。
由于DTD有些局限性,比如不支持命名空间。

XML Schema




XML Schema命名空间作用:

  1. 避免命名空间冲突,类似Java中的package
  2. 将不同标签分类。比如aop是针对aop的标签

代码解释 :

  • xmlns="http://www.springframework.org/schema/beans"声明xml文件默认命名空间,表示未使用其他命名空间的所有标签的默认命名空间
  • xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"声明XML Schema实例,声明后就可以使用schemaLocation属性了。
  • xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    指定Schema的位置这个属性必须结合命名空间使用。这个属性有两个值.第一个表示需要使用的命名空间。第二个表示供命名空间使用的XML Schema的位置。
    xsi:schemaLocation的含义是如果需要找http://www.springframework.org/schema/beans命名空间定义,使用版本http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

Bean 基本配置

  1. 属性注入
  • 基本值注入

        

public class XmlBean {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

这里定义private String name是非必须的, Bean 容器会找到setName进行注入。

  • 对象类型注入

     

 
        

  • 使用p命名空间注入
// 使用p命名空间之前

    
            dankun
     

// 使用p之后


  1. 构造方法注入
  • 基本使用

        
    
public class XmlBean {
    private String name;

    public XmlBean(String name) {
        this.name = name;
    }
}
  • 按照类型匹配入参

  • 按照索引匹配入参

          
    
     
    

  1. 工厂方法注入
    工厂方法注入,适用于将非Spring的代码或者第三方类库注入Spring容器进行管理。
public class CarFactory {
    public Car createBM() {
        Car car = new Car("宝马");
        return  car;
    }
}

    
    

当然最好的方式是静态工厂方法注入

public class CarFactory {
    public static Car createBM() {
        Car car = new Car("宝马");
        return  car;
    }
}

    

你可能感兴趣的:(Spring Bean 作用域以及三种xml基本注入方式总结)