初识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 ...
随机推荐
- iOS开发系列--Objective-C之KVC、KVO
概述 由于ObjC主要基于Smalltalk进行设计,因此它有很多类似于Ruby.Python的动态特性,例如动态类型.动态加载.动态绑定等.今天我们着重介绍ObjC中的键值编码(KVC).键值监听( ...
- APOC 15 Years Celebration
最近很忙,没有及时更新博客,也没有参加各种活动,唯一的活动就是接下来要讲的APOC 15 Years Celebration.不知不觉,自己也加入APOC有一年多了,正如大家所说“岁月是把杀猪刀”,我 ...
- C# 6.0 功能预览 (一)
一.索引的成员和元素初始化 1.1 原始初始化集合 Dictionary 1.2 键值初始化集合 Dictionary 1.3 运算符 $ 初始化集合 Dictionary 二.自动属性的初始化 一不 ...
- JSP模板继承功能实现
背景 最近刚入职新公司,浏览一下新公司项目,发现项目中大多数JSP页面都是独立的.完整的页面,因此许多页面都会有如下重复的代码: <%@ page language="java&quo ...
- Hystrix框架1--入门
介绍 在开发应用中或多或少会依赖各种外界的服务,利用各个服务来完成自己的业务需求,现在流行的微服务架构更是离不开各个服务之间的调用,这就导致整体应用的可用性依赖于各个依赖服务的可用性. 比如一个依赖3 ...
- C# BS消息推送 SignalR Hubs环境搭建与开发(二)
1. 前言 本文是根据网上前人的总结得出的. 环境: SignalR2.x,VS2015,Win10 2. 开始开发 1)新建一个MVC项目,叫做SignalRDemo 2)安装SignalR包 In ...
- Java_IO流_File类配合使用(其中用到了递归)
第一:Java File类的功能非常强大,利用Java基本上可以对文件进行所有的操作.以下对Java File文件操作以及常用方法进行简单介绍 案例1:遍历出指定目录下的文件夹,并输出文件名 stat ...
- webpack摸索(一)webpack-dev-server热模块替换
webpack-dev-server 是生成在内存中的 本地开发: index.html <!DOCTYPE html> <html lang="en"> ...
- PHP从PHP5.0到PHP7.1的性能全评测
本文是最初是来自国外的这篇:PHP Performance Evolution 2016, 感谢高可用架构公众号翻译成了中文版, 此处是转载的高可用架构翻译后的文章从PHP 5到PHP 7性能全评测( ...
- Resource governor2:Configuration query
SQL Server Engine 当前使用的configuration,称作 In-memory configuration,使用DMV:sys.dm_resource_governor_XXX查看 ...