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)); } }
结果为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方法,看起来不太直观。