Spring框架学习3:bean元素属性

Spring的bean的常用属性

1.scope

  scope用来配置bean对象是否是单例模式。单例模式是java的23种设计模式之一,指在这个项目运行中一个类的对象只会实例化一次,一般工厂创建的类都是单利模式。非单例模式叫多例模式或者原型模式。

spring工厂中对象默认都是单利模式,如果想要配置成多例模式,可以使用bean的scope属性,scope常用有两个取值:

  singleton:单例模式,默认值

  prototype:原型模式,多例模式

单例模式是工厂初始化时创建的,多例模式是工厂初始化后创建对象的时候创建的。

举例说明,这里还以上一篇的电脑E470为例来说明,首先默认单例模式,创建E470对象:

import com.zs.entity.impl.E470;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class SpringTest {
    @Test
    public void test1() {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        E470 e470 = (E470) context.getBean("e470");
        E470 e4701 = (E470) context.getBean("e470");
        System.out.println(e470.equals(e4701));
    }
}
View Code

结果为true,两个对象指向同一个地址。

然后将e470修改为多例模式:

再执行测试类,结果为false。

2.autowire

autowire是用来配置spring对象属性的默认的装配方式。有三个取值

  2.1 no 默认值,不启用自动装配

  2.2 byType:根据类型自动装配

  

  2.3 byName:根据名称自动装配,如果bean的name属性没有声明,默认取值id

  

spring对象属性注入的两种方式:

  1.设值注入

    设置注入要求对象的实体类中必须生成get和set方法,然后再spring工厂中就可以使用property属性来实现设值注入

  

  2.构造注入

  构造注入要求:

    1.必须生成有参构造方法,

    

    2.在工厂中配置有参构造

    

设值注入:使用起来比较直观,以后项目中大多数情况都采用设值注入,必须给对象生成get和set方法

构造注入:不用生成get和set方法,看起来不太直观。

猜你喜欢

转载自www.cnblogs.com/Zs-book1/p/10995642.html