【Spring 基础篇一】为什么使用Spring?

     最近在对Spring进行研究,Spring是一个轻量级的容器框架,对于Spring的基本定位就是"可有可无",如何进行解释呢,比如对于SSH框架来说,Spring的出现就是为了辅助Hibernate和Struts2更好的发挥其作用,对于其特性我们稍后再进行介绍,本次我们只是通过一个简单的demo来分析一下,既然"可有可无",为何我们还要使用呢?

   对于项目,我们只需要建立一个Java项目来描述我们想要过程即可,他和Web并没有什么关系。我们通过分层来表述想要的思想,通过建立两个数据库,来实现客户端的调用。

先看未使用Spring之前的实现过程:

【Spring 基础篇一】为什么使用Spring?_第1张图片

    通过Clinet调用服务端,通过服务端调用实现层。Client->Manager->Dao简单的一个过程,我们实现的就是使用Mysql或者Oracle来完成客户端的调用,数据库之间转换的一个过程。

Client端代码:

public class Client {

	public static void main(String[] args) {
		// 由我们的应用程序负责服务(对象)定位
		UserManager userManager = new UserManagerImpl();
		// 直接对添加方法赋值
		userManager.addUser("张三", "123");

	}
}
Manager实现类和接口类:

public class UserManagerImpl implements UserManager {
	
	public void addUser(String username, String password) {
		// 由我们的应用程序负责服务(对象)定位
		// UserDao userDao=new UserDao4MySqlImpl();
		UserDao userDao = new UserDao4OracleImpl();
		userDao.addUser(username, password);
	}
}
public interface UserManager {
	// 接口,从实现获取具体信息
	public void addUser(String username, String password);
}
D层接口和两个实现类:

public interface UserDao {
	// 添加用户的方法
	public void addUser(String username, String password);
}
public class UserDao4MySqlImpl implements UserDao {
	// Mysql的一个测试实现
	public void addUser(String username, String password) {
		System.out.println("UserDao4MySqlImpl.addUser()");
	}
}
public class UserDao4OracleImpl implements UserDao {
	// Oracle的测试实现
	public void addUser(String username, String password) {
		System.out.println("UserDao4OracleImpl.addUser()");
	}
}

       简单的三层方法,如果我们想将Mysql更换成Oracle,就必须修改Manager实现层的调用,才能满足需求。庆幸的是我们是基于接口编程的,我们随时可以更换实现方法。

     通过上部分代码我们可以分析道,我需要使用什么数据库,都是需要穷主观上去控制的,比如我使用Mysql,那么我就必须要手动修改Manager来更换。那么该如何避免更改代码,且减轻“自己”的负担呢?通过Spring则可以达到我们想要的需求。

     我们只需要把对象以及对象之间的依赖关系全权交给Spring即可。它负责查对象,然后再注入给你,这就是IOC容器的依赖注入的过程,所有的过程都依赖反正SPring来给你负责,你只负责最终结果就好。

加入Spring,我们可以分几步进行:

1、Spring的依赖包配置

  • 用来记录日志:../dist/log4j-1.2.14.jar
  • Spring核心包:../lib/spring.jar
  • 通用日志/日志的抽象(辅助log4j记录日志,支持log4j日志器):../lib/jakarta-commons/commons-logging.jar
     点击WIndows->Java->Build Path->User Libraries->点击New,新建,比如我们输入spring,确定之后选中我们创建的spring,然后选择Add External JARs…,将我们上述的三个jar包加入,然后点击保存即可。如图:
【Spring 基础篇一】为什么使用Spring?_第2张图片

2、提供spring配置文件applicationContext.xml(核心)

applicationContext.xml文件内容:(注意前缀必须要完整)
<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">

	<bean id="userDao4Mysql" class="com.bjpowernode.spring.dao.UserDao4MySqlImpl"></bean>
	<bean id="userDao4Oracle" class="com.bjpowernode.spring.dao.UserDao4OracleImpl"></bean>
	<bean id="userManager" class="cpm.bjpowernode.spring.manager.UserManagerImpl">
		<!-- 构造函数作用 -->
	<!-- 	<constructor-arg ref="userDao4Mysql" /> -->
		<constructor-arg ref="userDao4Oracle" />
	</bean>
</beans>

3、提供log4j.properties配置文件

      具体内容可另行去定义,比如Log4j,有5中级别定义错误,到底使用哪种,需要自己去判定(Debug  调试信息|Info  一般信息|Warn  警告|Error  错误|Fatal   严重错误)

4、在userManager中提供构造函数,让spring将UserDao实现注入(DI)过来

     我们实现的目的则是不让其看见对于数据库的操作,所以我们可以直接定义一个构造函数来实现传值。
更改后的UserManagerImpl:
public class UserManagerImpl implements UserManager {

	// 定义成员变量
	private UserDao userDao;

	// 生成构造方法赋值
	public UserManagerImpl(UserDao userDao) {
		this.userDao = userDao;
	}
	public void addUser(String username, String password) {
		userDao.addUser(username, password);
	}
}

5、让spring管理我们对象的创建和依赖,必须将依赖关系配置到Spring配置文件中。

     Spring的核心就是这个applicationContext.xml配置文件,所以我们需要将对象以及对象之间的关系写入配置文件中,也就是如上的配置文件内容。

6、最后看一下我们客户端的调用

public static void main(String[] args) {
		/* 通过BeanFactory来自动解析我们的配置文件 */
		BeanFactory factory = new ClassPathXmlApplicationContext(
				"applicationContext.xml");
		/* 通过getBean来获取对象 */
		UserManager userManager = (UserManager) factory.getBean("userManager");
		userManager.addUser("张三", "123");
	}
     温馨提示:记得将Jar包引入咱们的项目中 啊,之前的一步只是将我们需要的三个jar包存入了一个自定义的包内,剩下的就是引入我们的项目中了,右键项目->properties->Java Build Path
【Spring 基础篇一】为什么使用Spring?_第3张图片
     然后选择User Library,选中spring,然后点击Finish则可。 最后通过单元测试,进行测试,对于数据库的更换,我们这时候只需要更改配置文件即可。

最后我们来分析一下,使用Spring优势体现在哪里?

  • 1、大量减少了Factory和SingleTon的数量,代码层次会清楚,使代码层次更加清晰;
  • 2、主要原因是我们不在查找,定位,创建和管理对象之间的关系了,都可以全权的交给IoC容器。
  • 3、Spring是一个轻量级的一个框架,相关的类没有继承,也没有实现它的任何一个接口,所以我们完全可以随时将Spring摒弃掉。

你可能感兴趣的:(spring,Spring配置文件)