第一篇:Java回顾之I/O
第二篇:Java回顾之网络通信
第三篇:Java回顾之多线程
第四篇:Java回顾之多线程同步
第五篇:Java回顾之集合
第六篇:Java回顾之序列化
第七篇:Java回顾之反射
第八篇:Java回顾之一些基础概念
第九篇:Java回顾之JDBC
第十篇:Java回顾之ORM框架
我计划分两到三篇文章来描述Spring,这一篇主要讲Spring一些基础的内容。
概述
我印象4、5年前,我还做java开发的时候,Spring是一个非常火的框架,香港虚拟主机,尤其是在Web开发领域,和Struts以及Hibernate构成了SSH三剑客。当时Web开发的另一个组合是LAMP,即Linux+Apache+MySQL+PHP。我在前端方面基本没有实战经验,对js等技术也还是停留在概念和语法方面,香港空间,所以扬长避短,我对Spring以及Hibernate特别感兴趣。
当年Spring是作为EJB的“替代者”横空出世的,其创始人Rod Johnson还写了一本《J2EE development without EJB》来推行这个框架,这也是一本关于Spring很经典的书,不过最好是在接触Spring一段时间后再去阅读,效果会好一点。
Spring最主要的特点有两个:IoC和AOP,这也是J2EE开发企业软件时经常碰到的问题:1)对象太多如何管理;2)共同逻辑和业务逻辑纠缠在一起,错综复杂,如何解耦。
这篇文章主要关注3个方面:IoC、AOP和数据库访问。这里我们假设所有需要的jar都已经准备就绪。
IoC
IoC的全称是Inversion of Control,虚拟主机,中文称为控制反转, Martin Flower由根据它创造了一个新词:Dependency Injection,中文称为依赖注入。这两个词讲的是一回事儿。
IoC的实质是如何管理对象,传统意义上我们使用new方式来创建对象,但在企业应用开发的过程中,大量的对象创建都在程序中维护很容易造成资源浪费,并且不利于程序的扩展。
实现IoC通常有三种方式:
1)利用接口或者继承,一般以接口较多。这种实现方式和我们平时提到的lazy load有异曲同工之妙。
2)构造函数注入。
3)属性注入。
IoC是Spring框架的核心,接下来我们来探索一下Spring中IoC的风采。
IoC简单示例
我们先来定义一个简单的接口和实现:
UserDao { 2void save(); 3 }UserDaoImpl implements UserDao 6 { save() { 9System.out.println(“save() is called.”);10 }11 12 }有事者,事竟成;破釜沉舟,百二秦关终归楚;苦心人,