初识Spring
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要解决的主要问题。
面向切面编程,简单的来说就是在不改变源程序的基础上为代码段增加新的功能,对代码段进行曾强处理。它的设计思想来源于代理模式,其主要有以下两点:
- 增将处理(Advice)类型:在源对象的方法之前插入的强将处理为前置增强,该方法正常执行之后插入的增强处理为后置增强,此外还有环绕增强、异常抛出增强、最终增强等类型
- 切入点(Pointcut):可以插入增强处理的方法
使用Spring AOP实现日志输出
1.在项目中添加SpringAOP相关的jar文件
2.编写前置增强和后置增强实现日志功能
3.编写Spring配置文件,对业务方法进行增强处理
4.编写代码获取带有增强处理的业务对象
最终程序运行结果:

初识Spring的更多相关文章
- 初识Spring Boot框架(二)之DIY一个Spring Boot的自动配置
在上篇博客初识Spring Boot框架中我们初步见识了SpringBoot的方便之处,很多小伙伴可能也会好奇这个Spring Boot是怎么实现自动配置的,那么今天我就带小伙伴我们自己来实现一个简单 ...
- 初识Spring security-添加security
请先查看 初识Spring security-无Security的SpringMVC 在pom.xml文件中添加包 <!-- Spring Security --> <depende ...
- 初识 Spring 框架
初识 Spring 框架可以帮助我们构建规范的.优秀的应用程序,简化烦琐的编码过程. Spring 是一个非常著名的轻量级的企业级开源框架,Spring 的目标是使 Java EE 更易用并促进良好的 ...
- 【初识Spring】对象(Bean)实例化及属性注入(xml方式)
title: [初识Spring]对象(Bean)实例化及属性注入(xml方式) date: 2018-08-29 17:35:15 tags: [Java,Web,Spring] --- #初识S ...
- 深入理解Spring(一):初识Spring
深入理解Spring(一):初识Spring 一. Spring介绍 Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnso ...
- 初识Spring框架
一.Ioc 1)概念:Ioc(Inversion Of Control)控制反转,也被称为依赖注入DI(Dependency Injection),是面向对象编程的一种思想. 2)作用:用来减低程序代 ...
- 初识Spring框架实现IOC和DI(依赖注入)
学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的, IoC是 ...
- 初识Spring MVC
1.什么是Spring MVC? Spring MVC属于SpringFrameWork的后续产品,它提供了构建 Web 应用程序的全功能 MVC 模块,与Struts2一样是一种优秀MVC框架,不同 ...
- Spring学习进阶(一)初识Spring
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...
随机推荐
- WDM驱动和NT驱动之我见
WDM驱动是NT驱动的进化版.我个人觉得它的主要好处有两个 1.能检测到设备的插入,系统能自动分配设备的硬件信息,如中断号.IO端口.设备物理地址等 2.支持设备的开机状态拔出 之前的NT驱动和硬件关 ...
- PostgreSQL 9.3发布
9月9日,PostgreSQL全球开发组宣布了9.3版发布的消息.从2010年9.0版开始,PostgreSQL已经连续四个版本稳定地按时在每年9月中旬发布,从一个侧面也显示了开发团队的强大实力. 9 ...
- 剑指Offer面试题:16.合并两个排序的链表
PS:这也是一道出镜率极高的面试题,我相信很多童鞋都会很眼熟,就像于千万人之中遇见不期而遇的人,没有别的话可说,唯有轻轻地问一声:“哦,原来你也在这里? ” 一.题目:合并两个排序的链表 题目:输入两 ...
- 《3D Math Primer for Graphics and Game Development》读书笔记2
<3D Math Primer for Graphics and Game Development>读书笔记2 上一篇得到了"矩阵等价于变换后的基向量"这一结论. 本篇 ...
- RTSP协议转换RTMP直播协议
RTSP协议转换RTMP直播协议 RTSP协议也是广泛使用的直播/点播流媒体协议,最近实现了一个RTSP协议转换RTMP直播协议的程序,为的是可以接收远端设备或服务器的多路RTSP直播数据,实时转换为 ...
- Azure PowerShell (8) 使用PowerShell设置Azure负载均衡器规则
<Windows Azure Platform 系列文章目录> 注意:如果Azure面对的客户只是企业级客户,企业级客户使用NAT设备访问Internet的话,因为多个客户端使用相同的So ...
- 《Entity Framework 6 Recipes》翻译系列 (5) -----第二章 实体数据建模基础之有载荷和无载荷的多对多关系建模
2-3 无载荷(with NO Payload)的多对多关系建模 问题 在数据库中,存在通过一张链接表来关联两张表的情况.链接表仅包含连接两张表形成多对多关系的外键,你需要把这两张多对多关系的表导入到 ...
- angular-ui分页组件
http://angular-ui.github.io/bootstrap/#/pagination 分页组件只提供生成分页按钮,数据的显示需要使用ng-repeat, 注意设置 items-per- ...
- Distribution1:Distribution Reader
在transactional replication中,在publication中执行了一个更新,例如:update table set col=? Where ?,如果table中含有大量的数据行, ...
- Transactional Replication2:在Subscriber中,主键列是只读的
在使用Transactional Replication时,Subscriber 被认为是“Read-Only”的 , All data at the Subscriber is “read-only ...







