1.Spring Framework系统架构
2.核心容器
核心概念:
①Ioc(Inversion of Control):控制反转,即使用对象时,由主动new产生对象转换为由外部提供对象,此过程中对象创建控制权由程序转移到外部。Spring提供了一个容器,负责对象的创建、初始化等一系列工作,称为Ioc容器,用来充当Ioc思想中的“外部”。被创建或被管理的对象在Ioc容器中称为Bean。
②DI:依赖注入,即在容器中建立bean与bean之间的依赖关系的整个过程
3.bean
(1)基础配置
类别 | 描述 |
名称 | bean |
类型 | 标签 |
所属 | beans标签 |
功能 | 定义Spring核心容器管理的对象 |
格式 | <beans> <bean/> <bean></bean> </beans> |
属性列表 | id:bean的id,使用容器可通过id值获取对应bean,在一个容器中,id值唯一 class:bean的类型,即配置bean的全路径类名 |
范例 | <bean id>=”bookdao” class=”com.itheima.dao.impl.BookDaoImpl”/> <bean id>=”bookService” class=”com.itheima.service.impl.BookServiceImpl”></bean> |
(2)别名配置
类别 | 描述 |
名称 | name |
类型 | 属性 |
所属 | bean标签 |
功能 | 定义bean别名,可定义多个,使用逗号(,),分号(;),空格分隔 |
注意:获取bean无论是通过id还是name获取,如果无法获取到,将抛出异常NoSuchBeanDefinitionException
(3)作用范围
类别 | 描述 |
名称 | scope |
类型 | 属性 |
所属 | bean标签 |
功能 | 定义bean的作用范围,可选范围如下: ·singleton:单例(默认) ·prototype:非单例 |
使用@Scope定义bean作用范围
eg.
@Respository
@Scope(“signleton”)
public class BookDaoImpl implements BookDao{
}
- ·适合交给容器进行管理的bean:
表现层对象、业务层对象、数据层对象、工具对象
- ·不适合交给容器进行管理的bean:
封装实体的域对象
(4)bean实例化
1)使用构造方法
spring创建bean时,调用的是无参构造方法,若无参构造方法不存在,将抛出异常BeanCreationException
2)静态工厂实例化bean
eg.
3)实例工厂
4)FactoryBean
(5)生命周期
1)生命周期:从创建到消亡的完整过程
2)bean生命周期:bean从创建到销毁的整体过程
3)bean生命周期控制:在bean创建后到销毁前做一些事情
①使用配置控制生命周期
②使用接口控制生命周期
4)使用@PostConstruct、@PreDestroy定义 bean周期
@Repository
@Scope(“singleton”)
public class BookDaoImp1 implements BookDao(
pub1ic BookDaoImp1()(
System.out.println(“book dao Constructor, ...”);@PostConstruct
pub1ic void init()
System.out.println(“book init ...”);
}
@PreDestroy
pub1ic void destroy(){
System.out.println("book destory ...");}
}