美文网首页
Spring_3 三种实例化bean的方式

Spring_3 三种实例化bean的方式

作者: mm_cuckoo | 来源:发表于2017-01-10 11:20 被阅读17次

    在Spring中有三种实例化Bean的方式,但是在实际中使用最多的是第一种,其他两种几乎不使用。

    • 实体bean,下面我们所说的都是基于这个实体Bean来介绍的。
    package com.sfox.bean;
    
    public class UserBean {
        public UserBean(){
            System.out.println("UserBean.......");
        }
        
        public void add(String flg){
            System.out.println("add......." + flg);
        }
    }
    
    

    1.使用类的无参构造创建
    使用这种方式,实体bean的构造函数不可以有参数。
    使用这种方式在beans.xml 中配置:

    <?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://www.springframework.org/schema/beans/spring-beans.xsd">
        
        <bean id="userBean" class="com.sfox.bean.UserBean"/>
    </beans>
    

    2.使用静态工厂方法

    • 创建静态工厂类
    import com.sfox.bean.UserBean;
    
    public class StaticBeanFactory {
        public static UserBean newUserBean(){
            return new UserBean();
        }
    }
    
    
    • 在beans.xml 中配置:
    <?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://www.springframework.org/schema/beans/spring-beans.xsd">
        
        <!-- 静态工厂创建Bean -->
        <bean id="staticBeanFactory" class="com.sfox.factory.StaticBeanFactory" factory-method="newUserBean"></bean>
        
    </beans>
    

    观察上面配置文件,factory-method="newUserBean" 这个属性值和静态工厂类中的静态方法相对应。

    3.实例工厂创建

    • 创建实例工厂类
    package com.sfox.factory;
    
    import com.sfox.bean.UserBean;
    
    public class BeanFactory {
        
        public UserBean newUserBean(){
            return new UserBean();
        }
    }
    
    
    • 在beans.xml 中配置:
    <?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://www.springframework.org/schema/beans/spring-beans.xsd">
    
        <!-- 普通工厂创建bean -->
        <bean id="beanFactory" class="com.sfox.factory.BeanFactory"></bean>
        <bean id="newBean" factory-bean="beanFactory" factory-method="newUserBean"></bean>
    </beans>
    

    我们注意这两个bean的配置,第一个bean的id和第二个bean的factory-bean="beanFactory" ,第二个bean中的 factory-method="newUserBean" 中属性和实体中的newUserBean 方法相对应。

    bean 标签的常用属性

    • id 属性:起的名称,id属性值名称可以任意命名。
      • id 的属性值,不能包含特殊符号
      • 根据id值得到配置对象
    • class 属性:创建对象所在类的全路径
    • name 属性:功能和id属性一样的,id属性值不能包含特殊符号,但是在name属性值里面可以包含特殊符号,在项目中很少用。
    • scope 属性
      • singleton : 默认值,单例的
      • prototype : 多例的
      • request : WEB 项目中,Spring 创建一个Bean 的对象,将对象存入到request 域中。
      • session :WEB 项目中,Spring 创建一个Bean 的对象,将对象存入到 session 域中。
      • globalSession :WEB 项目中,应用在 Porlet 环境,如果没有 Porleet 环境那么 globalSession 相当于 session。

    相关文章

      网友评论

          本文标题:Spring_3 三种实例化bean的方式

          本文链接:https://www.haomeiwen.com/subject/ftykbttx.html