我应用程序中充斥着大量的singleton,用程序的方式实现singleton显得麻烦费事。Spring可以帮我们很方便的统一管理这些东西。当然,Spring的功能远远不止这些。
Spring的功能如下:
IOC容器(核心功能),控制反转,实现方式为DI注入。
AOP
事务管理
现在我们开始学习Spring的第一步吧。
本例功能是这样的,做一个公共接口UserDao定义了一个save的方法,他的实现类有两个UserDao4Mysql,UserDao4Oracle,当调用UserDao4Mysql的save方法打印“save user 4 mysql!”,当调用UserDao4Oracle的save方法则打印“save user 4 oracle!”。所以我们大可以将一个具体的子类对象注入给UserDao接口,当以后需求要更换的时候,在配置文件里直接修改就行了。
项目结构如图:
1、新建Web project项目
2、创建User Library,加入如下jar,spring依赖库
* SPRING_HOME/dist/spring.jar
* SPRING_HOME/lib/jakarta-commons/commons-logging.jar
* SPRING_HOME/lib/log4j/log4j-1.2.14.jar
3、拷贝log4j配置文件到src下
4、写相应的DAO
UserDao接口
UserDao4Mysql类
UserDao4Oracle类
5、写相应的BO(要注入的属性需提供构造函数或者setter)
UserService接口
UserServiceImpl类
6、配置applicationContext.xml,让Spring的IOC进行管理我们的对象,默认为singleton,当一个对象有状态的时候,可以设置scope="prototype"
当以后需求变化的时候,我们UserService的save方法想换为mysql的话,可以将<property name="userDao" ref="userDao4Oracle" />的ref改为userDao4Mysql
7、编写测试类