Spring简介

说到Spring就得提到它的作者“Rod Johnson”,2002年他编写了《Expert One-on_One java EE设计与开发》一书。在书中,它对传统的java EE技术日益臃肿和低效提出了质疑,他觉得应该有更便捷的做法,于是提出了Interface 21,也就是Spring框架的雏形。他提出了技术以实用为准的主张,引发了人们对“正统”java EE的反思。2003年2月Spring框架正式成为一个开源项目,并发布于SourceForge。

Spring致力于java EE应用的各种解决方案,而不是仅仅专注于某一层的方案。可以说Spring是企业应用开发的“一站式”选择,但Spring并不想取代那些已有的框架,而是以高度的开放性与他们无缝整合。

Spring框架大约有20个功能模块组成。这些模块被分成6个部分,分别是:Core Container、DataAccess/Integration、Web、AOP(Aspect Oriented Programming)、Instrumentation及Test。

Spring Core 是框架的基础部分,提供了IOC特性。Spring Context为企业级开发提供了便利和集成的工具。Spring AOP是基于Spring Core的符合规范的面向切面编程的实现。Spring JDBC提供了JDBC的抽象层,简化了JDBC编码,同时使代码更健壮。Spring ORM部分对Hibernate等ORM框架提供了支持。Spring Web 为Spring在Web应用程序中的使用提供了支持。

Spring Ioc

控制反转(Inversion of Control,Ioc),也被称为依赖注入(Dependency Injection,DI),是面向对象编程的一种设计理念,用来减低程序代码的耦合度。

什么是依赖?

依赖在代码中一般指通过局部变量、方法参数、返回值等建立的对于其他对象的调用关系,例如A类的方法中,实例化了B类的对象并调用其他方法已完成特定的功能,我们就说A类依赖于B类。简单说就是如果A类想要完成某种特定功能必须要使用到B类的实例或方法那我们就说A类依赖于B类。

几乎所有的成序都是由两个或更多的类通过彼此合作来实现完整的功能,类与类之间的依赖关系增加的系统开发的复杂程度,我们开发一个类的时候,还要考虑对正在使用该类的其他类的影响。从而导致了系统不具备良好的扩展性和可维护性,甚至在开发中难以进行测试。这时我们就要使用到控制反转了。最简单的控制反转的体现就是《设计模式》中的简答工厂模式了,在该模式中A类依赖于B类对象,但A类并不直接使用代码去创建B类对象而是将这一工作交给了C类去完成,从而降低了A类与B类之间的耦合度。这样使用工厂类虽然可以降低类与类之间的耦合度但是大量的工厂类被引入项目明显增减的开发的工作量。而Spring能够替我们完成这项额外的工作,为我们提供了完整的Ioc实现,让我们得以专注于业务类的设计。好了让我们通过一个小demo来了解一下Spring IOC如何使用吧!

1.下载Spring 并添加到项目中。

 2.编写配置文件。

3.编写代码获取HelloSpring实例。

Spring AOP

面向切面编程(Aspect Oriented Programming,AOP)是软件编程思想发展到一定阶段的产物,是面向对象编程的有益补充。AOP一般使用与具有横切逻辑的场合,如访问控制、事务管理、性能检测等。像这些穿插在既定业务中的通用操作,如日志记录等,就是所谓的“横切逻辑”,也称为切面。当我们要增加或减少横切逻辑的时候还要修改业务方法中的相应代码。我们希望无需在业务方法中显示编写这些通用的代码,在需要的时候系统能自动帮我们调用所需的功能代码,这正是AOP要解决的主要问题。

面向切面编程,简单的来说就是在不改变源程序的基础上为代码段增加新的功能,对代码段进行曾强处理。它的设计思想来源于代理模式,其主要有以下两点:

  1. 增将处理(Advice)类型:在源对象的方法之前插入的强将处理为前置增强,该方法正常执行之后插入的增强处理为后置增强,此外还有环绕增强、异常抛出增强、最终增强等类型
  2. 切入点(Pointcut):可以插入增强处理的方法

使用Spring AOP实现日志输出

1.在项目中添加SpringAOP相关的jar文件

2.编写前置增强和后置增强实现日志功能

3.编写Spring配置文件,对业务方法进行增强处理

4.编写代码获取带有增强处理的业务对象

最终程序运行结果:

初识Spring的更多相关文章

  1. 初识Spring Boot框架(二)之DIY一个Spring Boot的自动配置

    在上篇博客初识Spring Boot框架中我们初步见识了SpringBoot的方便之处,很多小伙伴可能也会好奇这个Spring Boot是怎么实现自动配置的,那么今天我就带小伙伴我们自己来实现一个简单 ...

  2. 初识Spring security-添加security

    请先查看 初识Spring security-无Security的SpringMVC 在pom.xml文件中添加包 <!-- Spring Security --> <depende ...

  3. 初识 Spring 框架

    初识 Spring 框架可以帮助我们构建规范的.优秀的应用程序,简化烦琐的编码过程. Spring 是一个非常著名的轻量级的企业级开源框架,Spring 的目标是使 Java EE 更易用并促进良好的 ...

  4. 【初识Spring】对象(Bean)实例化及属性注入(xml方式)

    title: [初识Spring]对象(Bean)实例化及属性注入(xml方式) date: 2018-08-29 17:35:15 tags: [Java,Web,Spring] --- #初识S ...

  5. 深入理解Spring(一):初识Spring

    深入理解Spring(一):初识Spring 一. Spring介绍        Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnso ...

  6. 初识Spring框架

    一.Ioc 1)概念:Ioc(Inversion Of Control)控制反转,也被称为依赖注入DI(Dependency Injection),是面向对象编程的一种思想. 2)作用:用来减低程序代 ...

  7. 初识Spring框架实现IOC和DI(依赖注入)

    学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的, IoC是 ...

  8. 初识Spring MVC

    1.什么是Spring MVC? Spring MVC属于SpringFrameWork的后续产品,它提供了构建 Web 应用程序的全功能 MVC 模块,与Struts2一样是一种优秀MVC框架,不同 ...

  9. Spring学习进阶(一)初识Spring

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...

随机推荐

  1. 【腾讯Bugly干货分享】Android ImageView 正确使用姿势

    本文来自于腾讯bugly开发者社区,未经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/5832602d7196970d65901d76 导语 本文主要介绍了ImageV ...

  2. Linux 挂载管理(mount)

    标签:mount,umount 概述 在上一章增加linux操作系统空间中已经使用过了mount命令对分区进行挂载,这一章详细介绍挂载管理,该命令涉及的知识点也挺多的而且也还比较重要,是需要掌握的一个 ...

  3. TCP状态

    TCP状态 TCP连接中包含不同的状态,如何通过状态来判断程序问题尤为重要. 三次握手 图中的connection部分为三次握手. 四次握手 图中的close部分为四次握手. CLOSE_WAIT 服 ...

  4. nginx小记

    上一次折腾nginx还是两年前的事情了.好多配置都忘记了. 捣腾了下阿里云,部署了一下,遇到几个小问题,温故并记录一下吧 :) 重新设置 nginx遇到问题:nginx: [error] invali ...

  5. js动态生成选项之考试系统(一)

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...

  6. 微信为什么发布 Mac 版?

    因为 Mac 就是好啊就是好啊,就是好…… 打完收工,谢谢,鼓掌 piapiapia……晚安! 这么写在京城行走会不会挨板砖呢?头像已经印到书上满世界的发出去了,虽然考虑到行走江湖求一个稳字,我还特意 ...

  7. 集群下session共享问题的解决方案.

    这一篇博客来讲解下babasport这个项目中使用的Login功能, 当然这里说的只是其中的一些简单的部分, 记录在此 方便以后查阅. 一: 去登录页面首先我们登录需要注意的事项是, 当用户点击登录按 ...

  8. iOS-调试技巧

    目录 前言逼优鸡知己知彼 百战不殆抽刀断Bug 普通操作 全局断点(Global BreakPoint) 条件断点(Condational Breakpoints)打印的艺术 NSLog 开启僵尸对象 ...

  9. 人之初,性本动 - G2 2.1 发布

    前言 随着可视化进入深水区,G2面临了越来越多交互上的需求.动画是提升交互必不可少的一部分,也是之前G2的薄弱环节.这个版本里我们开发并替换了动画底层,统一了时间轴,使G2的动画性能大大提升,并提供了 ...

  10. IDDD 实现领域驱动设计-架构之经典分层

    上一篇:<IDDD 实现领域驱动设计-上下文映射图及其相关概念> 在<实现领域驱动设计>书中,分层的概念作者讲述的很少,也就几页的内容,但对于我来说,有很多的感触需要诉说.之前 ...