1.由容器来管理对象之间的依赖关系(而不是对象本身来管理),就叫“控制反转”或“依赖注入”
Spring框架的基本思想就是IOC/DI
Spring就是一个IOC容器
2.spring的最大作用ioc/di,将类与类的依赖关系写在配置文件中,程序运行时根据配置文件动态加载依赖的类,降低的类与类之间的藕合度。
spring让对象与对象之间的关系都通过配置类说明管理,Spring根据这些配置内部通过反射去动态的组装对象
要记住:Spring是一个容器,凡是在容器里的对象才会有Spring所提供的这些服务和功能。
它的原理是在applicationContext.xml加入bean标签,在bean标签中通过class属性说明具体类名、通过property标签说明该类的属性名、通过constructor-args说明构造子的参数。
其一切都是反射,当通过applicationContext.getBean("id名称")得到一个类实例时,就是以bean标签的类名、属性名、构造子的参数为准,通过反射实例对象,唤起对象的set方法设置属性值、通过newInstance实例化得到对象。
正因为spring一切都是反射,反射比直接调用的处理速度慢,所以这也是spring的一个问题。
spring 第二大作用就是aop,其机理来自于代理模式,代理模式有三个角色分别是通用接口、代理、真实对象代理、真实对象实现的是同一接口,将真实对象作为代理的一个属性,向客户端公开的是代理,当客户端调用代理的方法时,代理找到真实对象,调用真实对象方法,在调用之前之后提供相关的服务,如事务、安全、日志。
其名称分别是代理、真实对象、装备、关切点、连接点。
动态注入,让一个对象的创建不用new了,可以自动的生产,这其实就是利用java里的反射。反射其实就是在运行时动态的去创建、调用对象,Spring就是在运行时,跟Spring的配置文件来动态的创建对象,和调用对象里的方法的 。
Spring里用的最经典的一个设计模式就是:模板方法模式。
3.AOP(Aspect-Oriented Programming)是面向切面编程,可以为某一类对象进行监督和控制(也就是在调用这类对象的具体方法的前后去调用你指定的模块)从而达到对一个模块扩充的功能。
这些都是通过配置类达到的。AOP的主要原理:动态代理
代理的两种方式:
静态代理:
针对每个具体类分别编写代理类;
针对一个接口编写一个代理类;
动态代理:
针对一个方面编写一个InvocationHandler,然后借用JDK反射包中的Proxy类为各种接口动态生成相应的代理类
事务处理:
在以往的JDBCTemplate中事务提交成功,异常处理都是通过Try/Catch 来完成,而在Spring中。Spring容器集成了TransactionTemplate,她封装了所有对事务处理的功能,包括异常时事务回滚,操作成功时数据提交等复杂业务功能。这都是由Spring容器来管理,大大减少了程序员的代码量,也对事务有了很好的管理控制。
1.<constant name="struts.objectFactory" value="spring" />
Spring的官方定义是:一个轻量级的IoC和Aop容器框架,它使用了一种叫做依赖注入的技术。
所谓依赖注入,就是指将创建对象以及协议依赖对象之间合作的责任从对象自身中转移到“工厂”中去,这个“工厂”通常由IoC容器提供。
Struts2与Spring的集成要用到Spring插件包,这个包是同 Struts2一起发布的。Spring插件是通过覆盖Struts2的ObjectFactory来增强核心框架对象的创建 。当创建一个对象的时候,它会用Struts2配置文件中的class属性去和Spring配置文件中的id属性进行关联,如果能找到则由Spring创建,否则由Struts2框架自身创建,然后由Spring来装配。 Spring插件具体有如下几个作用:
1. 允许spring来创建Action、Interceptror和Result
2. 由Struts创建的对象能够被Spring装配
3. 提供了2个拦截器来自动装配action,如果没有使用Spring ObjectFactory的话
这里要注意的是,我们不必在Spring中去注册action,尽管我们可以这么去做,通常Struts框架会自动的从action mapping中创建action对象。
当指定struts.objectFactory为spring时,struts2框架就会把bean转发给spring来创建,装配,注入。但是bean创建完成之后,还是由struts容器来管理其生命周期。.
需要注意的一个地方:Spring中的缺省作用域是Singleton作用域。而往往Action属于有状态的bean,应该使用prototype作用域。如果忽略这个细节,在我们方便实用set,get方法处理数据的时候,可能会有线程安全 上的风险。
这个属性用于说明Struts2的 对象池创建工厂,Struts2也有自己的对象池,就像Spring那样,在配置文件中你可以引用对象池中的对象,你可以借助于Spring中的对象池,当想要得到Spring中的对象池时,申明struts.objectFactory为Spring的对象池构建工厂
2.
切面aspect : 把横切的关注点(如安全性检查方法)抽取出来,将其放到一个类中,这个类就叫切面
通知advice : 是对横切关注点的实现,如checkSecurity()方法
切入点pointCut : 安全性检查的范围,即由切入点表达式判断在哪个方法(连接点Joinpoint) 上执行checkSecurity()
明明白白AOP(傻瓜也会心领神会!)
http://stamen.iteye.com/blog/1512388
3、Spring两种容器:
BeanFactory容器、应用上下文ApplicationContext
Bean工厂延迟载入所有的Bean,直到getBean()方法被调用时bean才被创建。
上下文则是在启动时预载入所有的单实例Bean,确保当你需要的时候它已经准备好了,不需要等待他们被创建 。
Spring对接口实现类通过Dynamic Proxy实现AOP,而对于没有实现任何接口的类 通过CGLIB实现AOP机制
对于没有实现接口的类 生成字节增强码的代理 其实就是生成真正实现类的子类
分享到:
相关推荐
### 一、Spring 基本概念 1. **依赖注入**:Spring 的核心特性之一,它允许组件之间的依赖关系在运行时由容器管理,而不是由组件自身硬编码。这样可以提高代码的可测试性和可维护性。 2. **Bean**:在 Spring 中,...
### Spring MVC基本概念 在Java Web开发领域,Spring MVC框架是一种非常流行的模型-视图-控制器(Model-View-Controller,MVC)架构实现。它主要用于构建清晰、可维护的Web应用程序。对于初学者而言,了解Spring ...
"Introducing the Spring Framework" 是一篇关于Spring框架的入门文章,对于初学者来说,它提供了一个了解Spring基本概念和核心功能的良好起点。配合翻译,读者可以更深入地理解Spring框架的工作原理和如何在实际...
2. **Spring基本概念** 在深入学习之前,我们需要对Spring的基本概念有清晰的理解。这包括Bean工厂和ApplicationContext的概念,以及它们在管理对象生命周期中的作用。此外,我们还会讨论XML配置和基于注解的配置...
**第一天:Spring基本概念——IOC** IOC(Inverse of Control,控制反转)是Spring的核心特性,它改变了传统Java对象的创建方式。在IOC中,对象的生命周期管理和依赖关系不再由对象自身负责,而是交由Spring容器来...
2. **Spring基本概念**:解释IoC和AOP的基本原理,以及它们在实际开发中的应用。 3. **实战教程**:通过实际项目示例,演示如何使用Spring进行控制器、服务、DAO层的开发,以及事务管理。 4. **Spring Boot快速...
- Spring基本概念和环境搭建 - Bean的配置和生命周期管理 - AOP原理与实践 - Spring MVC的使用 - 数据源配置和事务管理 - 整合其他框架如Hibernate、MyBatis - Spring Boot与微服务 - Spring Security和Spring Cloud...
#### 二、Spring基本概念 1. **Spring框架定义**: - **轻量级**:Spring框架本身非常轻量,开发者可以根据实际项目需求灵活选择使用框架中的某些功能模块。 - **非侵入式**:在使用Spring框架进行开发时,开发者...
3. `spring2.0-reference_final_zh_cn.chm`:这是Spring 2.0的中文参考文档,尽管版本较旧,但仍能提供Spring基本概念和机制的介绍。 4. `Hibernate_3.2.0_Reference_zh_CN.chm`:这是Hibernate 3.2.0的中文参考手册...
下面我们将深入探讨Spring的基本包及其核心概念。 1. **IoC(Inversion of Control)容器**:Spring的核心是IoC容器,它负责管理对象的生命周期和对象之间的依赖关系。通过配置文件或注解,我们可以告诉IoC容器如何...
- 已经熟悉OOP、Java和Spring基本概念的开发者。 - 希望深入了解如何将AOP应用于实际项目中的开发者和架构师。 #### 六、业界评价 这本书受到了来自Spring框架创建者Rod Johnson在内的多位专家的高度评价,被赞誉...
#### 二、AOP基本概念 AOP是一种编程范式,其目的是提高模块化程度,特别是将那些对很多类都具有影响的公共行为封装起来,以便减少系统的耦合度,并且增加可重用性。Spring AOP是在Spring框架的基础上实现的一种面向...
本篇文章将详细探讨Spring的基本配置,帮助你深入理解如何在项目中设置和使用Spring。 一、Spring配置概述 Spring的配置方式主要有两种:XML配置和Java配置。早期,XML配置是主流,而现在,随着Spring Boot的兴起...
### Spring基本知识点教程+案例演示 #### Spring框架简介 Spring框架是为了解决企业级应用开发的复杂性而诞生的一款轻量级Java平台框架。它最初由Rod Johnson创建,后来发展成为Spring源代码项目,该项目由Pivotal...
在Spring框架中,装配是核心概念之一,它允许开发者声明性地配置和组合应用程序组件。本文将深入探讨Spring装配基本属性的原理,帮助你更好地理解如何在代码中使用和配置这些属性。 首先,Spring装配的基本方式有两...
9. **Spring Boot**:虽然不在“spring-framework基本包”内,但 Spring Boot 是基于 Spring 框架的快速开发工具,它简化了 Spring 应用的初始搭建以及配置过程,引入了“起步依赖”概念,使得开发者能够快速构建...
在本项目中,我们主要探讨的是如何利用Spring MVC和Spring Security框架构建一个基本的无数据库登录系统。Spring MVC是Spring框架的一部分,用于处理Web应用程序的请求-响应模型,而Spring Security则是一个强大的...
这些问题覆盖了Spring框架的基础概念、核心组件、应用场景等方面,帮助读者巩固所学知识并提升实战能力。 ### 结语 Spring框架作为Java企业级开发的首选框架,不仅因为其强大的功能和灵活性,还因为它拥有一个庞大...
**一、控制反转(IoC)概念** 控制反转是一种设计思想,主要体现在对象的创建和依赖关系的处理上。在IoC中,不再由对象自己去创建或查找依赖的对象,而是将这种控制权交给一个专门的容器(即Spring Ioc容器)。这样...
在本文中,我们将深入探讨 Spring MVC 的基本概念和应用。 **1. MVC 架构模式** MVC 是一种设计模式,将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller)。在 Spring MVC 中: - **...