Spring
Spring的BeanFactory和ApplicationContext的区别
BeanFactory是ApplicationContext的的父接口,BeanFactory接口定义了一些spring工厂最底层的使用方法,一般在spring的源代码中我们使用BeanFactory,当该类不建议程序员直接使用,建议程序员使用ApplicationContext接口,该接口对BeanFactory功能进行了一些扩展:
- 提供spring的国际化支持
- 提供了事物的处理方式
- 可以加载多个主题配件
spring的bean的常见属性
scope
scope用来配置被俺对象但是否单例模式。单例模式是java的二十三中模式之一,只在这个项目运行过程中一各类的队形只会实例化一次。一般,工厂类的对象都是单列模式,可以配置bean的scope属性, scope常见有两种取值:
- springleton 默认值 :单列模式
- prototype 原型模式 多列模式
单列模式下,对象是工厂初始化的时候创建的。
多列模式是在工厂初始化,获得对象后创建的。
autowire
autowire使用配置属性的默认值的装配方式。有三个取值
1.no:默认值不启用自动装配
2 byType:根据类型自动装配
- byName:根据名称自动装配,一般bean的name如果不声明默认值就是id
spring的bean属性注入的两种方式
1. 设值注入
设值注入要求:
要求属性在实体类中必须有getter和setter方法,然后在spring的工厂中就可以使用property标签进入设值注入
2. 构造注入
构造注入通过类的构造方式注入
设值注入的优点:使用比较直观,以后项目中大多数情况采用设值注入。
缺点:必须给属性生成个getter和setter
构造注入的优点:不用给属性生成getter和setter方法
缺点:但看起来部太直观
@component注解
与我们使用bean的方式创建对象,加了@component注解的类会在工厂中创建对象,改对象的id为@component注解的名称,但是首字母要小些