Spring介绍

[b][b]1. IoC : Inversion of Control 控制反转[/b]

应用本身不负责personDAO的创建和维护,而是由外部容器负责,使用依赖注入
来获取对象;
控制权就由应用移到了外部容器,控制权的转移就是反转;

class PersonServiceBean {
new personDAO();
}

如何实现依赖注入? 反射
Dependency Injection : DI

[b]2. 依赖注入[/b]

(1) 方法: 构造函数;setter;
(2) 在运行期,由外部容器动态的

[b]3. 为何使用Spring; ------- 面试[/b]

(1) 降低耦合度;
Service->DAO;
以前的做法:直接在Service中new出DAO;
还有通过Factory和属性文件,通过面向接口编程实现;
Spring:通过构造函数或setter方法,通过接口实现;

(2) 使用Spring的服务;
事务管理;消息服务;
如Hibernate和JDBC中对事务的控制,每个方法都要写事务控制语句;
itcastbbs解决了这个问题;通过Filter,控制每个请求;
Spring管理事务:设置属性

(3) 单例模式支持;
以前需要编码;Spring做简单配置即可;

(4) AOP技术,实现:权限拦截等等;

(5) 众多的辅助类:如JdbcTemplate, HibernateTemplate

(6) 对主流的应用框架提供了集成支持:Hibernate, JPA, Struts,Hibernate;

---- 简化开发

4. 轻量级与重量级概念的划分:[/b]

标准:使用了多少的服务
Spring: 默认不为应用打开;
EJB: 默认为应用打开;

[b]5. 使用[/b]

(1) jar: spring.jar, commons-logging.jar
(2) 配置:beans.xml
名字随意取,内容可以在文档中搜索beans
beans.xml放在src-> classpath下
(3) 如何配置beans.xml;
(4) 实例化Spring容器
两种方法: 见ppt
类路径; 文件系统路径;
建议使用类路径下;

--- 使用单元测试:检查环境是否成功搭配;


[b]6. bean内部原理:[/b]

开发模拟的Spring容器

ItcastClassPathXmlApplication
-- 定义1个bean:BeanDefinition,专门用于存放<bean>属性值;
--通过List存放全部的BeanDefinition
-- (1) init
使用dom4j读取配置文件;
为什么使用命名空间?·····················
-- (2) 实例化bean: 存入map中;
privateMap<String, Object> singtons = newHashMap():
-- (3) 获取bean getBean
singtons.get(beanName);

使用刚才的模拟容器:测试

7. Spring什么时候创建bean实例?

-- 验证:Spring什么时候创建bean实例?容器实例化,还是getBean();
判断:在HellWorldServiceImpl构造函数中syso:我被创建了
结果:默认情况下,容器实例化的时候创建;

-- 容器中保存几份bean对象;
判断: hellword1==hellword2
结果: 1份

8. bean的作用域;
默认情况下是单例的。
<beanscope="singleton">
scope="prototype" --- 每次getBean返回一个新的对象;[可以通过7判断]
lazy-int="true" ---容器启动时不创建对象,需要的时候(getBean)创建;

== <beans>中可以初始化所有的bean

init-method="init" ---bean初始化后立即完成一个操作(bean.init())
destroy-method="destroy" ---bean销毁前立即完成一个操作(bean.destroy())
==AbstractApplicationContext.close();
通过上述代码可以发现bean.destroy的执行

9. bean的创建:ppt
(1) 类构造器实例化: 掌握这一种即可

(2) 对象工厂来创建 :很少用
HelloWorldServiceFactroy
public staticHelloWorldServiceBean createHelloWorldServiceBean()
newHelloWorldServiceBean;
--- Spring中的配置:ppt
<bean
id="HelloWorldServiceBean"
factory-method="createHelloWorldServiceBean()">
(3) 实例工厂方法实例化:几乎不用,它需要实例化工厂
...

=========== 上述知识点 ===========

1. 如何把bean交给Spring管理
2. 如何实例化Spring容器;
3. bean的作用域;
4. 如何指定bean的初始化方法和销毁方法;


=========== 上述知识点 ===========
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值