亚博体育yb9461分析道:
2.1.Ioc容器

BeanFactory: Spring最底层的接口,只提供了的IoC功能,负责创建、组装、管理bean;使用了懒加载,getBean时候才会初始化Bean;
ApplicationContext接口:继承了BeanFactory,除此之外还提供AOP集成、国际化处理、事件传播、统一资源加载等功能;在初始化容器的时候就会初始化Bean;
1.1.bean实例化方式(需要使用@Autowired注解来声明)

构造器实例化(无参数构造器);
静态工厂方法实例化:解决系统遗留问题;
实例工厂方法实例化:解决系统遗留问题;
实现FactoryBean接口实例化;
ps:都需要在xml文件里进行设置;

1.2.bean作用域

singlecon:单例,在Spcing IoC容器中仅存在一个bean实例(默认的scope);
prototype:多例,每次从容器中调用Bean时,都返回一个新的实例,即每次调用getBean()时,相当于执行new XxxBean(): 会在容器启时创建对象;
request:用于web开发,将Bean加入request范围,request.setAttribute("xxx"),在同一个reques获得同一个Bean;
session:用于web开发, 将Bean放入Session范围,在同一个Session中获得同一个Bean;
globalSession: 一般用于porlet应用环境,分布式系统存在全局session概念(单点登录),如果不是porlet环境,globalSession等同于Session;
1.3.bean的创建和销毁

init-method: bean生命周期初始化方法,bean创建后会进行调用;
destroy-method:容器被销毁的时候,如果bean被容器管理,bean销毁之前调用该方法;
ps:单例bean会执行销毁方法,多例bean是不会销毁容器的,因为bean可能有多个容器可能会再次创建(因为bean要往容器注册),造成资源浪费;

2.DI依赖注入

指Spring创建对象的过程中,将对象依赖属性(常量,对象,集合)通过设置值给该对象。
可以通过调用对象的setter方法.
可以在创建对象的时候(调用构造器),同时设置对象的属性值.
3.DI注解

使用@Autowired注解,在配置xml文件进行DI依赖注入注解配置;是Spring规范提供的;

Autowired注解寻找bean的方式:
首先按照依赖对象的类型找,如果找到,就是用setter或者字段直接注入;
如果在Spring上下文中找到多个匹配的类型,再按照名字去找,如果没有匹配报错;
使用@Resource注解(类似于Autowired注解),是JavaEE规范提供的;

4.IoC注解

使用@Component ("myDataSource") 组件如果不写value属性值,此时bean的id默认是类的首字母小写 ;

等价于,但是需要在xml进行IoC容器注解配置:br/>类似@Service,@Controller,@Repository注解,全部放在类上;@Component(泛指组件)
配置bean作用域需要加入@Scope ("prototype");
配置init和destroy方法需要在对应方法,加上注解@PostConstruct;@PreDestroy;