一、Spring简介

首先,Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性的角度而言,绝大部分Java应用都可以从Spring中受益。总结说来,Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架。其架构图如下:

其使用步骤:

1、spring的依赖包配置,以下三个包都是必须的:

/dist/spring.jar

/lib/log4j/log4j-1.2.14.jar

/lib/jakarta-commons/commons-logging.jar

2、提供spring配置文件applicationContext.xml

3、提供log4j.properties配置文件

二、为什么使用spring

spring一个很重要的特性就是控制反转,在目前的运用中个,控制反转还是我使用spring的一个重要原因。那么,什么是控制反转?

2.1,控制反转

控制反转(Inversion of Control ,Ioc):所谓控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护由外部容器来负责。这样控制权就由应用转移到了外部容器,控制权的转移就是所谓反转。

那么在我们最初没有使用spring的时候,我们每次使用一个对象,都要使用关键字new 去实例化我们的具体类。比如说,我们的DAO层有一个MySQL的实现,我们在调用的时候,会new一个mysql的实现类。但如果需求发生了变化,我们需要将数据库的实现变为Oracle等,那么我们要重新写DAO的实现,并且去程序里面修改所有的new出来的对象,这样子,就带来了很多麻烦。而spring实现了控制反转,以依赖注入的形式去创建对象。使用spring,我们不需要使用new关键字去实例化一个新的对象,只需要在配置文件中进行类的注入,就可以完成对象的创建。当我们需要更改的时候,则只需要更改配置文件的注入实例即可。

PS:spring的注入形式:1.setter方法注入;2.使用构造器注入;3.使用Field注入(用于注解方式)

2.2,实例解析

首先,建立一个java程序(非必须java程序):

其次,看spring的主要配置:applicationContext.xml文件

<span style="font-family:KaiTi_GB2312;font-size:18px;"><?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.angel.spring.dao.UserDao4MySqlImpl"></bean> <bean id="userDao4Oracle" class="com.angel.spring.dao.UserDao4OracleImpl"></bean> <bean id="userManager" class="com.angel.spring.manager.UserManagerImpl">
<property name="userDao" ref="userDao4Oracle" />
</bean>
</beans>
</span>

然后,看manager层对于dao层的调用:

<span style="font-family:KaiTi_GB2312;font-size:18px;">package com.angel.spring.manager;

import com.angel.spring.dao.UserDao;

public class UserManagerImpl implements UserManager {

	private UserDao userDao;

	public void addUser(String username, String password) {
userDao.addUser(username, password);
} public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
}
</span>

最后,是客户端对于manager层的调用

<span style="font-family:KaiTi_GB2312;font-size:18px;">package com.angel.spring.client;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext; import com.angel.spring.manager.UserManager;
import com.angel.spring.manager.UserManagerImpl; public class Client { public static void main(String[] args) {
// 读取配置文件
BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml"); UserManager userManager = (UserManager) factory.getBean("userManager");
userManager.addUser("Angel", "123");
} }</span>

可以发现的是,当我们使用spring控制反转,依赖注入的形式去组建我们的系统时,我们不再使用new关键字去定位我们需要的对象。而是统一通过配置文件的形式去注入我们需要的实例,这样子,当我们的系统需要更改的时候,就容易方便很多。而且,大大降低了系统的侵入性!

三、总结

spring的使用能给我们带来很多的好处,比如:1,降低组件之间的耦合度,实现软件各层之间的解耦;2,可以使容器提供众多服务如事务管理消息服务处理等等。当我们使用容器管理事务时,开发人员就不需要手工 控制事务,也不需要处理复杂的事务传播;3,容器提供单例模式支持,开发人员不需要自己编写实现代码;4,容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能;5,集成其他主流框架等等。但是,选择一种架构、一种技术的依据是基于实践的证据——来自历史项目或亲自试验的经验,而不是任何形式的偶像崇拜或者门户之见,这就是“循证架构”——Evidence-based
architecture。

【Spring 1】Spring简介的更多相关文章

  1. Spring 系列: Spring 框架简介 -7个部分

    Spring 系列: Spring 框架简介 Spring AOP 和 IOC 容器入门 在这由三部分组成的介绍 Spring 框架的系列文章的第一期中,将开始学习如何用 Spring 技术构建轻量级 ...

  2. Spring Web Flow 简介

    Spring Web Flow 简介 博客分类: 转载 SSH 最近在TSS上看到了一片介绍Spring Web Flow的文章,顺便就翻译了下来,SWF的正式版估计要到6月份才能看到了,目前的例子都 ...

  3. Spring 系列: Spring 框架简介(转载)

    Spring 系列: Spring 框架简介 http://www.ibm.com/developerworks/cn/java/wa-spring1/ Spring AOP 和 IOC 容器入门 在 ...

  4. Spring中AOP简介与切面编程的使用

    Spring中AOP简介与使用 什么是AOP? Aspect Oriented Programming(AOP),多译作 "面向切面编程",也就是说,对一段程序,从侧面插入,进行操 ...

  5. Unit03: Spring Web MVC简介 、 基于XML配置的MVC应用 、 基于注解配置的MVC应用

    Unit03: Spring Web MVC简介 . 基于XML配置的MVC应用 . 基于注解配置的MVC应用 springmvc (1)springmvc是什么? 是一个mvc框架,用来简化基于mv ...

  6. spring 拦截器简介

    spring 拦截器简介 常见应用场景 1.日志记录:记录请求信息的日志,以便进行信息监控.信息统计.计算PV(Page View)等.2.权限检查:如登录检测,进入处理器检测检测是否登录,如果没有直 ...

  7. Spring HTTP invoker简介

    Spring HTTP invoker简介 Spring HTTP invoker是spring框架中的一个远程调用模型,执行基于HTTP的远程调用(意味着可以通过防火墙),并使用java的序列化机制 ...

  8. Spring Boot 之Spring data JPA简介

    文章目录 添加依赖 添加entity bean 创建 Dao Spring Data Configuration 测试 Spring Boot 之Spring data JPA简介 JPA的全称是Ja ...

  9. spring cloud要点简介及常用组件

    spring cloud基于spring boot spring cloud是通过包装其他技术框架实现的,例如OSS组件,实现了一套通过基于注解.java配置和基于模板开发的微服务框架. spring ...

  10. Spring Framework体系结构简介

    说明:以下转自Spring官方文档,用的版本为4.3.11版本. 一.引用官方文档 2.2.1核心集装箱 所述核心容器由以下部分组成spring-core, spring-beans,spring-c ...

随机推荐

  1. sudo gem install cocoapods

    在使用IOS_BaiduSDK的时候,需要用到cocoapods,所以就需要按照步骤继续着.但是在过程中会遇到一些问题: 1. sudo gem install cocoapods 运行这个报错 Ru ...

  2. [UEditor]百度编辑器配置总结

    前端配置文件ueditor.config.js 前端有两个重要的配置属性: UEDITOR_HOME_URL: 配置百度编辑器的资源目录路径,你可以手动指定此路径,默认是有URL变量指定,而URL变量 ...

  3. Hive架构及Hive On Spark

    Hive的所有数据都存在HDFS中. (1)Table:每个表都对应在HDFS中的目录下,数据是经过序列化后存储在该目录中.同时Hive也支持表中的数据存储在其他类型的文件系统中,如NFS或本地文件系 ...

  4. BIP_BI Publisher Administrator设定Configuration/Font/Currencies(案例)

    2014-08-08 Created By BaoXinjian

  5. Note++ 的快捷

    Notepad++绝对是windows下进行程序编辑的神器之一,要更快速的使用以媲美VIM,必须灵活掌握它的快捷键,下面对notepad++默认的快捷键做个整理(其中有颜色的为常用招数): Ctrl+ ...

  6. UCOS-消息队列(学习笔记)

    消息队列的核心是一个消息的指针数组,UCOS系统初始化时根据OS_CONFI.h中的最大队列个数定义这么多个消息队列(队列的结构)并将他们串联成空的链表,创建消息队列时从空链表中抽出一个并用指针数组的 ...

  7. MySQL 开启与关闭远程访问&&授权前需执行GRANT USAGE ON *.* TO 'cai'@'%' IDENTIFIED BY 'caigan2015';才能终端访问

    MySQL 开启与关闭远程访问 (1)通过MySQL用户去限制访问 权限系统目的: MySQL基于安全考虑root账户一般只能本地访问,但是在开发过程中可能需要打开root的远程访问权限,今天介绍的就 ...

  8. Linux设置服务自启动(转载)

    From:http://www.cnblogs.com/nerxious/archive/2013/01/18/2866548.html 有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统 ...

  9. Yii 框架生成缩略图

    控制器 if($model->load(Yii::$app->request->post()))        { //原图            $model->img = ...

  10. 回朔法/KMP算法-查找字符串

    回朔法:在字符串查找的时候最容易想到的是暴力查找,也就是回朔法.其思路是将要寻找的串的每个字符取出,然后按顺序在源串中查找,如果找到则返回true,否则源串索引向后移动一位,再重复查找,直到找到返回t ...