`

spring基本概念

阅读更多
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 MVC基本概念

    系统开发 Spring MVC框架的基本概念 初学适用

    中软spring培训讲义

    Spring 基本概念(IOC);AOP;Spring 整合Struts,Hibernate

    spring介绍ppt 介绍spring的基本概念和使用

    spring介绍ppt 介绍spring的基本概念和使用,从ioc和aop讲起,对想快速了解spring的人有很大帮助

    spring笔记,基本使用,基本概念

    spring笔记,基本使用,基本概念

    中软国际Spring简介

    3天 第一天 Spring 基本概念(IOC) 第二天 AOP 第三天 Spring 整合Struts,Hibernate SSH

    Spring相关的外文文献和翻译.zip

    这里主要介绍Spring的基本概念,并详细介绍其中以“bean工厂”为核心的轻量级控制反转(IoC)容器。 Spring让开发者更轻松的实现轻量级、可扩展的J2EE架构。对于我们推荐的架构模块,让Spring提供了即时可用的实现...

    01-spring简介-框架的概念

    01-spring简介-框架的概念Spring框架是 Java 平台的一个开源的全栈(Full-stack)应用程序框架和控制反转容器实现,一般被直接称为 Spring。该框架的一些核心功能理论上可用于任何 Java 应用,但 Spring 还为基于...

    Spring从入门到精通 源码

     全书共分14章,内容涵盖了Spring的基础概念、核心容器、Spring AOP、事务处理、持久层封装、Web框架、定时器、Spring和Struts、Spring和Hibernate、Spring和Ant、Spring和Junit。本书适用于...

    Spring的IoC容器(《Spring揭秘》的精选版)

    IoC的基本概念 2.1 我们的理念是:让别人为你服务 2.2 手语,呼喊,还是心有灵犀 2.3 IoC的附加值 2.4 小结 掌管大局的IoC Service Provider 3.1 IoC Service Provider的职责 3.2 运筹帷幄的秘密 3.3 小结 ...

    spring-boot中文教程

    Spring Boot中文文档提供了详细的中文翻译和说明,包括了基本概念、使用方法、配置参数、代码示例等,可以帮助用户快速上手和深入理解Spring Boot的使用。该文档还提供了丰富的链接和参考资料,方便用户深入学习和...

    spring2.5学习PPT 传智博客

    08_编码剖析Spring装配基本属性的原理 09_Spring如何装配各种集合类型的属性 10_使用构造器装配属性 11_用@Resource注解完成属性装配 12_编码剖析@Resource注解的实现原理 13.@Autowire注解与自动装配 14.让...

    spring.doc

    1 Spring基本特征 6 2 Spring的组成 6 2.1 Spring的jar包 6 2.2 Spring配置文件 7 2.3 Spring API 8 3 Spring基本功能详解 8 3.1 SpringIOC 8 3.2别名Alias 11 别名拓展: 11 3.3 Spring容器内部对象的创建 12 ...

    Spring概述

    Spring的一些基本概念的介绍,例如IoC,AOP等,并介绍了这么使用Spring

    spring.net中文手册在线版

    12.1.1.AOP基本概念 12.1.2.Spring.NET AOP的功能 12.1.3.Spring.NET的AOP代理 12.2.Spring.NET中的切入点 12.2.1.概念 12.2.2.切入点的操作 12.2.3.Spring.NET提供的切入点实现类 12.2.3.1.静态切入点 12.2.3.2....

    Spring的学习笔记

    一、 AOP概念 19 二、 利用动态代理实现面向切面编程 20 第八课:Spring AOP配置选项 21 一、 AOP配置annotation方式 21 (一) 搭建annotation开发环境 21 (二) aspectJ类库 22 (三) AOP的annotation实例 22 (四) ...

    Spring框架.zip

    本压缩包内主要针对于初学spring框架者使用的相信笔记,里面详细介绍了Spring的基本概念、重点掌握的两个案例,注解,Xml,Bean。

    java视频教程:spring框架精讲附加实战项目练习

    主要讲Spring的核心概念和基本使用。涉及IoC、DI、AOP、JdbcTemplate和事务管理等核心概念。同时讲解了xml和注解两种方式使用Spring的示例。通过Spring的入门程序介绍了Spring的 IoC 和 DI 的概念,介绍了Spring的...

    Spring-Reference_zh_CN(Spring中文参考手册)

    2. Spring 2.0 的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 更简单的XML配置 2.2.2. 新的bean作用域 2.2.3. 可扩展的XML编写 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP XML配置 2.3.2. 对@AspectJ 切面的...

    Spring 2.0 开发参考手册

    2. Spring 2.0 的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 更简单的XML配置 2.2.2. 新的bean作用域 2.2.3. 可扩展的XML编写 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP XML配置 2.3.2. 对@...

    Spring Cloud & SaaS 实战经验分享

    本身供spring cloud的初学者或者未入门者使用。使用前,请先了解spring boot的基本概念

Global site tag (gtag.js) - Google Analytics