浅析Spring

一:什么是Spring

Spring是一个开源的框架,是为了解决企业应用程序开发复杂性由RodJohnson创建的。虽然Spring是为企业级应用推出的,但是所有的Java系统开发都可以使用Spring,包括桌面应用程序和企业级Web应用。简单的来说,Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架。

u 目的:解决企业应用开发的复杂性

u 功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能

u 范围:任何Java应用

u 轻量级:大小与开销方面而言Spring是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。

u 非侵入式:Spring应用中的对象不依赖于Spring的特定类。

u 控制反转:Spring通过一种称为控制反转(IOC)的技术促进了松耦合。当应用了IOC一个对象依赖的其他对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。

u 切面编程:Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。

u 容器:Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建—一个可配置的原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例,以及它们是如何关联的。

u 框架:Spring可以将简单的组件配置,组成为复杂的应用,在Spring中应用对象被声明式组合,典型地是在一个XML文件里,Spring提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了我们。

另外详情介绍可以参考博客

http://developer.51cto.com/art/200906/128386.htm

http://blog.csdn.net/lovesummerforever/article/details/22500339

二:Spring IOC

2.1 IOC容器的理解:

http://www.cnblogs.com/superjt/p/4311577.html

2.2 IOC容器的原理

http://blog.csdn.net/luoshenfu001/article/details/5816408/

http://jiwenke.iteye.com/blog/493965

http://blog.csdn.net/lovesummerforever/article/details/22646793

http://www.cnblogs.com/ITtangtang/p/3978349.html#a3(源码解读)

三:SprngAOP

AOP的理解

http://blog.csdn.net/qukaiwei/article/details/50367761(通俗易懂类型)

AOP的原理及其说明

http://blog.csdn.net/moreevan/article/details/11977115/

时间: 2024-07-29 04:32:19

浅析Spring的相关文章

从webshell浅析spring mvc的安全性

试想你是黑客,而咱们运用spring mvc+velocity建立体系号码大全,即使大门打开答应上载jsp,你能拿shell? 咱们知道,webshell能够运转的条件无非于1.能够解析 2.能够履行并完结一些关键词挖掘功能性的工作,比方读取文件 如今来看web mvc,mvc的精髓在于“分权”(这个词是我乱编的),我想表达的意思是:他能将数据拜访逻辑.流程操控逻辑.事务逻辑.视图显现逻辑全部剥脱离,这对开发者来说,优点在于使得体系愈加明晰.便于保护:而以安全的角度来看,运用mvc也大大提高安全

浅析Spring MVC和Spring BOOT之间的简化小秘密

从Servlet技术到Spring和Spring MVC,开发Web应用变得越来越简捷.但是Spring和Spring MVC的众多配置有时却让人望而却步,相信有过Spring MVC开发经验的朋友能深刻体会到这一痛苦.因为即使是开发一个Hello-World的Web应用,都需要我们在pom文件中导入各种依赖,编写web.xml.spring.xml.springmvc.xml配置文件等.特别是需要导入大量的jar包依赖时,我们需要在网上查找各种jar包资源,各个jar间可能存在着各种依赖关系,

做一个合格的程序猿之浅析Spring AOP源码(十五) 分析JdkDynamicAopProxy的invoke方法

上一节我们已经分析了Proxyfactorybean如何去生成一个目标对象的代理的,这一节我们将浅析一下基于JDK动态代理的核心回调方法invoke的源代码: 首先先打开JdkDynamicAopProxy.java 如下 JdkDynamicAopProxy.java文件是实现了AopProxy和InvocationHandler这2个接口的 先讲AopProxy这个接口,如图所示,AopProxy接口就定义了2个方法 我们再看这个接口的继承关系 好了,作为原生的基于JDK的动态代理的JdkD

做一个合格的程序猿之浅析Spring AOP源码(十八) Spring AOP开发大作战源码解析

其实上一篇文章价值很小,也有重复造轮子的嫌疑,网上AOP的实例很多,不胜枚举,其实我要说的并不是这个,我想要说的就是上一节中spring的配置文件: 我们这边并没有用到我们上几节分析的哪几个AOP的主要实现类:ProxyFactoryBean.java , ProxyFactory.java ,AspectJProxyFactory.java ,在我们这个配置文件中,根本没有显示的去配置这些类,那么spring到底是怎么做到的呢? 大家可以这么想,spring到底是怎么去杀害目标对象的呢?真正的

浅析 Spring IoC - 基础概念

1. IoC是什么? IoC(Inversion of Control)即控制反转,不是什么技术,而是一种设计思想.在Java开发中,IoC 意味着将你设计好的对象交给容器去控制,而不是传统的在对象内部直接控制(比如说 new 一个对象).理解好 IoC 的关键是要明确"谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了": 谁控制谁,控制什么:传统Java SE 程序设计,我们直接在对象内部通过 new 创建对象,是程序主动去创建依赖对象:而 IoC 是由 IoC

浅析 Spring IoC - 注入方式

1. IoC 容器的概念 IoC 容器指 具有依赖注入功能的容器,IoC 容器负责实例化.定位.配置应用程序中的对象及建立这些对象间的依赖.应用程序无需直接在代码中 new 相关对象,而是由 IoC 容器进行组装.在Spring 中 BeanFactory 是 IoC 容器的实际代表者. Spring IoC 容器通过读取配置文件中配置元数据,通过元数据对用中的各个对象进行实例化及装配.一般使用基于 xml 配置文件进行配置元数据,而且 spring 与 配置文件 完全解耦,可以使用其他方式进行

【Spring】浅析Spring框架的搭建

目录结构: contents structure [-] Spring是什么 搭建Spring框架 简单Demo 1,建立User类 2,建立Test类 3,建立ApplicationContext文件 参考文章 Spring是什么 Spring是一个容器框架,用于配置bean并且维护bean之间关系的框架. Spring的结构图: 搭建Spring框架步骤 下载Spring开发包,Spring-4.3.4完整开发包下载. 在JavaProject下面建立一个lib目录,将开发包下面的libs目

浅析Spring MVC工作机制

1.如何使用Spring MVC? 在web.xml中配置一个DispatcherServlet DispatchServlet初始化的时候会去寻找一个在应用程序的WEB-INF目录下的配置文件,命名规则是:servletName-servlet.xml  其中servletName是在部署描述符(web.xml)中Dispatcherservlet的名字. 可以在所谓的配置文件中,扩展路径映射关系.定义视图解析器.定义业务逻辑处理流程规则. 此外,也可以把Spring MVC的配置文件放在应用

浅析Spring框架下PropertyPlaceholderConfigurer类[转载]

要了解这个类首先要弄清楚一个概念:bean factory post-processor官方解释是这样的:A bean factory post-processor is a java class which implements theorg.springframework.beans.factory.config.BeanFactoryPostProcessor interface. It is executed manually  (in the case of the BeanFacto