ApplicationContext的三个常用实现类:
ApplicationContext **context = new ClassPathXmlApplicationContext(“bean.xml”);
他可以加载类路径下的配置文件,要求配置文件必须在类路径下。不在的话,加载不了。
ApplicationContext _context1 = _new _FileSystemXmlApplicationContext(“bean.xml”); **
它可以加载磁盘任意路径下的配置文件(必须有访问权限)
_ApplicationContext _context2 = _new _AnnotationConfigApplicationContext(“bean.xml”);
它是用于读取注解创建容器的_
核心容器的两个接口引发的问题:
ApplicationContext:
她在创建核心容器时,创建对象的策略是采用立即加载的方式__ 也就是说,只 要一读取完配置文件马上就要创建配置文件中配置的对象
BeanFactory:
它在构建核心容器时,创建对象采取的是延迟加载的方式,也就是说,什么时候根据id获取对象了,什么时候才真正的获取对象
**
Bean的作用范围调整:
bean标签的scope属性:
作用:用于指定bean的作用范围
singleton: 单例的(默认值)
prototype: 多例的
request: 作用于web应用的请求范围
session: 作用于web应用的会话范围
global-session: 作用于集群环境的会话范围(全局会话范围),当不是集群环境时,他就是session
构造函数注入:
使用标签:
标签中的属性:
type:用于指定要注入的数据的数据类型,该数据类型也是构造函数中某个或某些参数的类型
index: 用于指定要注入的数据给构造函数中指定索引位置的参数赋值,索引的位置是从0开始
name:用于指定给构造函数中指定名称的参数赋值
value: 用于给基本类型和String类型提供数据
ref: 用于指定其他的bean类型数据
set方法注入
设计的标签:
标签的属性:
name: 用于指定注入时所调用的set方法的名称
value: 用于提供基本类型和String类型的数据
ref: 用于指定其他的bean类型数据。它指的就是spring的IOC核心容器中出现过的bean对象
bean对象的生命周期:
单例对象:
出生: 当容器创建时对象出生
活着: 只要容器还在,对象一直活着
死亡: 容器销毁,对象死亡
总结: 单例对象的生命周期和容器相同
多例对象:
出生: 当我们使用对象时spring框架为我们创建
活着: 对象只要是在使用过程中就一直活着
死亡: 当对象长时间不用,且没有别的对象引用时,由Java的gc回收
注解:
Component:
作用: 用于把当前类对象存入spirng容器中
属性: value: 用于指定bean的id,当不写时,默认时当前类名,首字母小写
Controller:一般用在表现层
Service: 一般用在业务层
Repository: 一般用在持久层
用于注入数据的:
和xml里的property意思一样
Autowired:
作用: 自动按照类型注入,只要容器中有唯一一个的bean对象类型和注入的变量类型匹配,就可以注入成功
Qualifier:
作用: 在按照类中注入的基础上再按照名称注入。它在给类成员注入时不能单独使用,但在方法参数注入时可以
value: 用于指定注入bean的id
Resource
作用: 直接按照bean的id注入,它可以独立使用
name: 用于指定的bean的id
Scope:
和xml里的scope一样,指定作用域范围
@PostConstruct 初始化方法执行的注解
@PreDestroy 摧毁方法执行的注解
**