Spring的容器(一般为ApplicationContext核心容器)生产和管理一个个Bean,在配置文件中一般要声明Bean的id(或name)和class
1.Bean的实例化(三种,构造器实例化最常见)
在面向对象的编程中,要想使用某个对象,就需要先实例化它,同样在Spring中要使用Bean 也要先实例化Bean。
有三种,构造器实例化,静态工厂方式实例化,实例工厂方式实例化,其中构造器实例化最常用(在通过容器的id调用Bean的时候 默认调用无参构造方法实例化)

2.Bean的作用域
最常用的是single(单例 默认)和prototype(原型)
single:使用single定义的Bean在Spring容器中将只有一个实例,也就是说,无论有多少个Bean引用它,始终将指向同一个对象,这是Spring容器默认的作用域。
prototype:每次通过Spring容器获取的prototype定义的Bean时,容器都将创建一个新的Bean实例。
3.Bean的生命周期
4.Bean的装配方式(Bean依赖注入的方式)
前文我们说过了两种依赖注入的方式(setter常用) 而Spring支持多种形式的Bean的依赖注入,笔者认为两者并不冲突,只不过Bean的依赖注入加入了java的反射和java注解 所以形式变多了。
Bean的装配/依赖注入的方式有以下三种:
1.基于XML的装配(setter设值注入和有参构造注入)
4.1.1 设值注入:Spring容器实例化Bean时,先调用Bean的默认构造方法来实例化Bean对象,然后通过反射的方式调用setter方法来注入属性值。所以Bean类必须:1.提供一个默认的无参构造方法 2.为需要注入的属性提供对应的setter方法
ApplicationContext.xml配置时,需要使用bean元素的子元素property来为每个属性注入值
4.1.2 有参构造注入:
ApplicationContext.xml配置时,需要使用bean元素的子元素<constructor-arg>来定义构造方法的参数
2.基于Annotation的装配(注解实现依赖注入)
@Respsitory:用于将数据访问层(DAO层)的类标识为Spring中的Bean
@Service:用于将业务层(Service层)的类标识为Spring中的Bean,通常用于Service业务层
@Controller:用于将控制层(Controller层)的类标识为Spring中的Bean,通常用于Controller控制层。
@Autowired:用于对Bean的属性变量,属性的setter方法及构造方法进行标注,配合对应的注解处理器完成Bean的自动装配工作。默认按照Bean的类型进行装配。(依赖注入的注解1)
@Resource:用于对Bean的属性变量,属性的setter方法及构造方法进行标注,配合对应的注解处理器完成Bean的自动装配工作。默认按照Bean的名称进行装配,如果不匹配,再按照Bean的类型进行装配(依赖注入的注解2)
以上注解实现的Bean的装配/依赖注入,需要在ApplicationContext配置文件中,配置对注解包的扫描。
3.自动装配
不使用注解,同时降低配置文件代码量,使用Spring的<bean>元素的autowire属性。
