框架特点
1.专业的人员编写好的程序,一般是实现了某种设计思想. 2.框架经过大量项目实践,之后才推出(Apache) 3.学习者:先了解框架结构、学习使用、
最后再去了解底层原理
Spring框架
Spring框架主要功能
1. Spring IOC容器(核心)
2. Spring DAO应用
3. Spring Web MVC应用
4. Spring ORM应用
5. Spring AOP应用
SpringWebMVC+SpringIOC+MyBatis(SSM)
Struts+Spring+Hibernate(SSH)
Spring IOC容器
1. IOC概念 Inversion of Control 控制反转/反向控制
//组件耦合度太高,替换DeptDao需要修改DeptServlet
DeptServlet-------------->DeptDao
new DeptDao();
//初始化
使用DeptDao.findAll
//释放对象资源
Spring提供了一个IOC容器,容器能够创建管理组件对象,并且能将对象给其他组件对象注入。
2. IOC容器优点
可以降低组件之间的耦合度,提升程序扩展性和移植性。
Spring IOC容器的使用
IOC容器对组件对象的管理
1. 创建容器对象
List list = new ArrayList();//创建集合对象
list.add(person);//放入元素
list.get(1)//获取元素
//创建容器对象
ApplicationContext ac = new ClassPathXmlApplicationContext(xml);
向xml文件中追加组件定义;//放入组件元素
ac.getBean("id");//获取组件对象
2. IOC容器使用过程
3. 对象创建
*方案1:new 构造器()
<bean id="" class="">
方案2:类.静态方法
<bean id="" class="" factory-method="">
方案3:对象.方法
<bean id="" factory-bean="" factory-method="">
1. 对象特性
scope单例/非单例 *
默认情况下,IOC容器采用单例模式创建组件对象。(一个bean组件只有一个对象) 如果需要改变成非单例,可以在追加scope="prototype",默
认是singleton
init-method对象初始化
在< bean>元素中使用init-method属性指定一个初始化方法,当bean对象创建后会自动调用init-method指定方法执行初始化逻辑.
destroy-method释放对象
在< bean>元素中使用destroy-method属性指定一个销毁方法,该方法需要满足以下条件
a.组件scope=singleton
b.触发容器对象的close方法(AbstractApplicationContext)
lazy-init对象创建时机
a.scope=singleton模式,对象创建是在ApplicationContext容器创建时创建。
通过lazy-init="true"属性可以将对象创建推迟到getBean方法调用时。
b.scope=prototype模式,对象创建是在ac.getBean("id")时创建。
IOC容器实现对象关系注入
DI概念:Dependecy Injection 依赖注入。
依赖注入可以分为set方法注入、构造器注入。最常用的是set注入。
1. set注入
组件中必须有setXxx方法,使用该方法接收配置中指定的值。
<bean id="ds" class="com.xdl.bean.MyDataSource">
<property name="username" value="scott">
</property>
<property name="xxx" value="xxx">
</property>
</bean>
2. 构造器注入
<bean id="ds" class="com.xdl.bean.MyDataSource">
<constructor-arg index="0" value="tiger">
</constructor-arg>
<constructor-arg index="1" value="tiger">
</constructor-arg>
</bean>
IOC综合案例(尝试理解,后续还会继续讲解)