Spring的 bean 工厂用一种统一的方式去装配所有应用对象,不管它们是粗粒度的组件还是细粒度的业务对象都一视同仁二。借助反射和依赖注入(Dependency Injection),被 bean 工厂管理的组件根本不需要知道 Spring 的存在。因此,我们称 Spring 是一个无侵入性的应用框架。
基础接口
在Spring中,轻量级容器最基本的接口是org.springframework.beans.factory.BeanFactory。这是一个非常简单的接口,所以如果没有任何现成的 bean 工厂实现能够满足你的要求(这种情况非常罕见),你也可以很容易地创建自己的实现。BeanFactory 接口提供了两个 getBean()方法,它们都可以根据 String 类型的名称查找获取 bean 实例,两者的不同之处在于∶其中一个getBean()方法允许使用者检查获得的 bean是否具有所需的类型(如果类型不符,会抛出一个 BeanNotOfRequiredrTypeException 异常)。
Spring 的 bean 工厂有很多种用法,既可以作为简单的 bean 配置管理,也可以用于集成 J2EE 资源,还可以用于生成 AOP代理。bean 工厂提供了集中的、统一的方式来装配 Spring中各种各样的应用对象,不论 DAO、业务对象还是 web 控制器都一视同仁。值得注意的是,应用对象很少需要直接用到 BeanFactory接口——它们通常都在工厂中配置、组装,不需要针对 Spring 编写任何特殊的代码。
Bean概念
- Java面向对象,对象有方法和属性,那么就需要对象实例来调用方法和属性(即实例化);
- 凡是有方法或属性的类都需要实例化,这样才能具象化去使用这些方法和属性;
- 规律:凡是子类及带有方法或属性的类都要加上注册Bean到Spring IoC的注解;
- 把Bean理解为类的代理或代言人(实际上确实是通过反射、代理来实现的),这样它就能代表类拥有该拥有的东西了
我们都在微博上@过某某,对方会优先看到这条信息,并给你反馈,那么在Spring中,你标识一个@符号,那么Spring就会来看看,并且从这里拿到一个Bean或者给出一个Bean
bean生命周期
Spring Bean的生命周期只有这四个阶段。
要彻底搞清楚Spring的生命周期,首先要把这四个阶段牢牢记住。实例化和属性赋值对应构造方法和setter方法的注入,初始化和销毁是用户能自定义扩展的两个阶段。实例化->Instantiation
- 属性赋值->Populate
- 初始化->Initialization
- 销毁->Destruction
注解分为两类:
- 一类是使用Bean,即是把已经在xml文件中配置好的Bean拿来用,完成属性、方法的组装;比如@Autowired , @Resource,可以通过byTYPE(@Autowired)、byNAME(@Resource)的方式获取Bean;
- 一类是注册Bean,@Component , @Repository , @ Controller , @Service , @Configration这些注解都是把你要实例化的对象转化成一个Bean,放在IoC容器中,等你要用的时候,它会和上面的@Autowired , @Resource配合到一起,把对象、属性、方法完美组装。
