Spring 框架算是 Java Web 开发中最热的一个框架了,接下来就来学习一下吧。
什么是 Spring
- Spring 是一个开源的用于简化采用 Java 语言开发企业级程序的一个分层的框架
- Spring 是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架
- 从大小与开销两方面而言 Spring 都是轻量的
- 通过控制反转(IoC)的技术达到松耦合的目的
- 提供了面向切面的编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务进行内聚性的开发。
- 包含并管理 应用对象的配置和生命周期。(容器)
- 将简单的组建配置、组合成为复杂的应用。(框架)
为什么要使用 Spring
- 在 Spring 上开发应用简单
- 在 Spring 上开发应用方便
- 在 Spring 上开发应用快捷
下图为 Spring 组成,我们重点学习的是 IoC 和 AOP
Spring IoC 容器
IoC - Inversion of Control,控制反转。控制权转移,应用程序本身不负责依赖对象的创建和维护,而是由外部容器负责创建和维护。
DI - Dependency Injection,即“依赖注入”是其中一种实现方式。在 IoC 容器运行期间,动态的将某种依赖注入到对象之中。
IoC 是什么
IoC 不是一种技术,只是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合、更优良的程序。传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类之间高耦合,难于测试;有了 IoC 容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是 松散耦合,这样也方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。
IoC 很好的体现了面向对象设计法则之一—— 好莱坞法则:“别找我们,我们找你”;
IoC 和 DI 浅显易懂的解释
现实生活中,我们也可以用一个不是很贴切的比喻,如下表格。
房屋中介 | IoC |
---|---|
找中介 | 找IoC容器 |
中介介绍房子 | 容器返回对象 |
租房、入住 | 使用对象 |
使用注解来构造 IoC 容器
用注解来向Spring容器注册Bean。需要在applicationContext.xml中注册
如:在base-package指明一个包
1 | <context:component-scan base-package="com.doity.service"/> |
表明com.doity.service包及其子包中,如果某个类的头上带有特定的注解【@Component/@Repository/@Service/@Controller】,就会将这个对象作为Bean注册进Spring容器。
如果有多个包,用逗号隔开。
@Controller
@Controller 对应表现层的 Bean,也就是Action,例如:
1 | @Controller |
####@ Service
@Service 对应的是业务层 Bean,例如:
1 | @Service("userService") |
@Resource
@Resource 默认是按照名称来装配注入的,只有当找不到与名称匹配的bean才会按照类型来装配注入
1 | @Resource |
##后记
要总结的内容太多啦,待续。
参考资料
- Spring 官网 https://spring.io/
- Spring wiki https://zh.wikipedia.org/wiki/Spring
- Spring 的注解注入 http://blog.csdn.net/baple/article/details/17891755
- Spring 入门 http://www.imooc.com/learn/196
- Spring 教程 http://www.yiibai.com/spring/
- Spring 核心技术学习总结 http://penghuaiyi.iteye.com/blog/182616
- Spring知识点总结大全 http://www.open-open.com/lib/view/open1329298931749.html
- Spring - 随笔分类 - 孤傲苍狼http://www.cnblogs.com/xdp-gacl/category/544380.html