今天看了海涛的<跟我学spring3>,这个是针对初学者的文章,并没有深入进行讲解.但是呢,还是对其做一个总结好了.
1. spring的用处
Spring
能帮我们根据配置文件创建及组装对象之间的依赖关系。
Spring
面向切面编程能帮助我们无耦合的实现日志记录,性能统计,安全控制。
Spring
能非常简单的帮我们管理数据库事务。
Spring还提供了与第三方数据访问框架(如Hibernate、JPA)以及第三方Web(如Struts、JSF)框架无缝集成,而且自己也提供了一套JDBC访问模板,来方便数据库访问。而且自己也提供了一套Spring MVC框架,来方便web层搭建。
2. spring的基础
核心容器:
包括Core、Beans、Context、EL模块。
●Core
模块:
封装了框架依赖的最底层部分,包括资源访问、类型转换及一些常用工具类。
●Beans
模块:
提供了框架的基础部分,包括反转控制和依赖注入。其中
Bean
Factory是容器核心,本质是“工厂设计模式”的实现,而且无需编程实现“单例设计模式”,单例完全由容器控制,而且提倡面向接口编程,而非面向实现
编程;所有应用程序对象及对象间关系由框架管理,从而真正把你从程序逻辑中把维护对象之间的依赖关系提取出来,所有这些依赖关系都由
BeanFactory来维护。
●Context
模块:
以Core和Beans为基础,集成Beans模块功能并添加资源绑定、数据验证、国际化、
Java EE支持、容器生命周期、事件传播等;核心接口是ApplicationContext。
●EL
模块:
提供强大的表达式语言支持,支持访问和修改属性值,方法调用,支持访问及修改数组、容器和索引器,命名变量,支持算数和逻辑运算,支持从Spring 容器获取Bean,它也支持列表投影、选择和一般的列表聚合等。
AOP
、Aspects
模块:
●AOP
模块:
Spring AOP模块提供了符合 AOP Alliance
规范的面向方面的编程(aspect-oriented programming)实现,提供比如日志记录、权限控制、性能统计等通用功能和业务逻辑分离的技术,并且能动态的把这些功能添加到需要的代码中;这样各专其职,降低业务逻辑和通用功能的耦合。
●Aspects
模块:
提供了对AspectJ的集成,AspectJ提供了比Spring ASP更强大的功能。
数据访问/
集成模块:
该模块包括了JDBC、ORM、OXM、JMS和事务管理。
●事务模块
:该模块用于Spring管理事务,只要是Spring管理对象都能得到Spring管理事务的好处,无需在代码中进行事务控制了,而且支持编程和声明性的事物管理。
●JDBC模块
:提供了一个JBDC的样例模板,使用这些模板能消除传统冗长的JDBC编码还有必须的事务控制,而且能享受到Spring管理事务的好处。
●ORM模块
:提供与流行的“对象-关系”映射框架的无缝集成,包括Hibernate、JPA、Ibatiss等。而且可以使用Spring事务管理,无需额外控制事务。
●OXM模块
:提供了一个对Object/XML映射实现,将java对象映射成XML数据,或者将XML数据映射成java对象,Object/XML映射实现包括JAXB、Castor、XMLBeans和XStream。
●JMS模块:
用于JMS(Java Messaging Service),提供一套 “消息生产者、消息消费者”模板用于更加简单的使用JMS,JMS用于用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。
●Web/Remoting
模块:
Web/Remoting模块包含了Web、Web-Servlet、Web-Struts、Web-Porlet模块。
●Web模块
:提供了基础的web功能。例如多文件上传、集成IoC容器、远程过程访问(RMI、Hessian、Burlap)以及Web Service支持,并提供一个RestTemplate类来提供方便的Restful services访问。
●Web-Servlet模块:
提供了一个Spring MVC Web框架实现。Spring MVC框架提供了基于注解的请求资源注入、更简单的数据绑定、数据验证等及一套非常易用的JSP标签,完全无缝与Spring其他技术协作。
●Web-Struts模块
:提供了与Struts无缝集成,Struts1.x 和Struts2.x都支持
Test
模块:
Spring支持Junit和TestNG测试框架,而且还额外提供了一些基于Spring的测试功能,比如在测试Web框架时,模拟Http请求的功能。
3. Ioc是什么
●谁控制谁,控制什么:
传
统Java
SE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而IoC是有专门一个容器来创建这些对象,即由Ioc容器来控制对
象的创建;谁控制谁?当然是IoC 容器控制了对象;控制什么?那就是主要控制了外部资源获取(不只是对象包括比如文件等)。
●为何是反转,哪些方面反转了:
有反转就有正转,传统应用程序是由我们自己在对象中主动控制去直接获取依赖对象,也就是正转;而反转则是由容器来帮忙创建及注入依赖对象;为何是反转?因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转;哪些方面反转了?依赖对象的获取被反转了
●谁依赖于谁:
当然是应用程序依赖于IoC容器;
●为什么需要依赖:
应用程序需要IoC容器来提供对象需要的外部资源;
●谁注入谁:
很明显是IoC容器注入应用程序某个对象,应用程序依赖的对象;
●注入了什么:
就是注入某个对象所需要的外部资源(包括对象、资源、常量数据)。
4. Ioc做什么
它能指导我们如何设计出松耦合、更优良的程序
IoC容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。应用程序无需直接在代码中new相关的对象,应用程序由IoC容器进行组装。在Spring中BeanFactory是IoC容器的实际代表者。
由IoC容器管理的那些组成你应用程序的对象我们就叫它Bean, Bean就是由Spring容器
初始化、装配及管理的对象,除此之外,bean就与应用程序中的其他对象没有什么区别了
5.详解IoC容器
在Spring
Ioc容器的代表就是org.springframework.beans包中的BeanFactory接口,BeanFactory接口提供了IoC容
器最基本功能;而org.springframework.context包下的ApplicationContext接口扩展了
BeanFactory,还提供了与Spring AOP集成、国际化处理、事件传播及提供不同层次的context实现
(如针对web应用的WebApplicationContext)。简单说, BeanFactory提供了IoC容器最基本功能,而
ApplicationContext
则增加了更多支持企业级功能支持。ApplicationContext完全继承BeanFactory,因而BeanFactory所具有的语义也适用
于ApplicationContext。
容器实现一览:
• XmlBeanFactory
:
BeanFactory实现,提供基本的IoC容器功能,可以从classpath或文件系统等获取资源;
(1) File file = new File("fileSystemConfig.xml");
Resource resource = new FileSystemResource(file);
BeanFactory beanFactory = new XmlBeanFactory(resource);
(2)
Resource resource = new ClassPathResource("classpath.xml");
BeanFactory beanFactory = new XmlBeanFactory(resource);
• ClassPathXmlApplicationContext
:
ApplicationContext实现,从classpath获取配置文件;
BeanFactory beanFactory = new ClassPathXmlApplicationContext("classpath.xml");
• FileSystemXmlApplicationContext
:
ApplicationContext实现,从文件系统获取配置文件。
BeanFactory beanFactory = new FileSystemXmlApplicationContext("fileSystemConfig.xml");
6.实例化bean
使用构造器实例化Bean
使用静态工厂方式实例化Bean,使用这种方式除了指定必须的class属性,还要指定factory-method属性来指定实例化Bean的方法,而且使用静态工厂方法也允许指定方法参数,spring IoC容器将调用此属性指定的方法来获取Bean,
使用实例工厂方法实例化Bean,使用这种方式不能指定class属性,此时必须使用factory-bean属性来指定工厂Bean,factory-method属性指定实例化Bean的方法,而且使用实例工厂方法允许指定方法参数,方式和使用构造器方式一样
分享到:
相关推荐
在Java Spring框架中,Spring IoC(Inversion of Control,控制反转)是核心特性之一,它使得应用程序的组件之间的依赖关系不再由代码直接管理,而是交由Spring IoC容器负责。这种设计模式降低了代码间的耦合,提高...
总结来说,Spring IoC通过注解配置和Maven项目构建,提供了一种高效、灵活的方式来管理和组织Java应用程序。通过学习和实践这些知识,开发者可以更好地利用Spring框架的优势,创建出易于维护和扩展的高质量软件。
总结,Spring的IOC和MVC设计模式是现代Java应用开发的基石,它们极大地提高了代码的可维护性和灵活性。通过构建自己的mySpring框架,我们不仅能掌握这两个核心概念,还能提升对软件设计模式的运用能力。
总结来说,Spring的IOC是通过控制反转实现对象的创建和管理,降低了组件之间的耦合度,提高了软件设计的灵活性。了解并熟练掌握IOC,对于提升Java企业级应用的开发效率至关重要。通过阅读源码,我们可以深入理解其...
Spring IOC(Inversion of Control...总结来说,这个示例源代码提供了一个基础的Spring IOC应用模型,包括了bean的定义、依赖注入以及测试。通过学习和理解这些文件,你可以更好地掌握Spring框架的核心理念和使用方式。
要深入理解并应用Spring的IoC容器,你需要具备Java面向对象编程的基础,了解XML配置和Spring框架的基本概念。此外,对Java集合框架、数据库操作以及设计模式有一定的理解也将非常有益。 **总结** Spring的IoC容器...
Spring IOC,全称为Inversion of Control,即控制反转,是Spring框架的核心特性,它通过反转对象的创建和管理权,将对象的依赖关系交由容器处理,从而实现了解耦。在Spring中,IOC的主要实现方式有两种:依赖注入...
总结来说,这个"Spring与IoC系列三:基于XML的依赖注入测试程序di.rar"涵盖了Spring框架的核心特性——依赖注入,通过XML配置文件管理对象间的依赖关系,是学习和实践Spring框架不可或缺的一部分。通过学习和操作这...
总结,Spring IoC通过XML配置实现依赖注入,配合Maven进行项目构建,能够有效地提升代码的可维护性和可测试性,是Java开发中的重要实践。通过学习和掌握这些知识点,可以提升你的开发效率和代码质量。
1.1 【第二章】 IoC 之 2.3 IoC的配置使用——跟我学Spring3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2 【第二章】 IoC 之 2.1 IoC基础 ——跟我学Spring3 . . . . . . . . . . . ...
在这个笔记中,我们将总结Spring的主要概念和技术,包括IOC、AOP、MVC、Struts2和Hibernate的集成。 IOC(Inversion of Control) IOC是Spring的核心概念,它是一种将对象之间的耦合关系降低到最小的设计模式。在...
Spring核心IoC和AOP的理解 本文主要介绍了Spring核心IoC和AOP的相关知识,涵盖了IoC和AOP的概念、特点、优点和应用场景等方面的内容。 一、IoC(Inversion of Control) IoC是一种设计模式,目的是为了降低应用...
- **IoC基础:** IoC是Spring的核心概念之一,通过它,Spring实现了对业务对象的管理和配置。IoC意味着创建对象的控制权由应用代码转到了外部容器,例如Spring容器。 - **IoC容器基本原理:** Spring的IoC容器通过...
【狂神说】Spring PDF学习总结笔记主要涵盖了Spring框架的核心概念、优点、组成部分以及相关扩展。Spring是一个由Rod Johnson创建的开源框架,旨在简化企业级应用开发的复杂性,它结合了众多现有技术,如SSH(Struct...
在IT行业中,Spring框架是Java...总结来说,"helloAop.zip"提供的示例可以帮助我们深入理解Spring框架的两大支柱:IOC和AOP。通过学习和实践这些例子,开发者可以更好地掌握Spring框架,提高其在实际项目中的应用能力。
总结来说,Spring更适合大型、复杂的应用,提供了丰富的功能和广泛的社区支持。而Guice则更适合小型、高效率的项目,强调简洁和速度。选择哪个取决于项目需求和团队偏好。了解和掌握这两种IoC容器,能帮助开发者更好...
在这个学习记录总结中,我们将深入理解Spring MVC的核心概念、主要组件以及其工作流程。 1. Spring MVC 概述 Spring MVC 是Spring框架的一部分,它基于Spring IoC(Inversion of Control,控制反转)容器,简化了...
Spring的IoC容器负责管理Bean的生命周期和依赖关系。它通过XML、Java配置或注解来定义Bean的定义,并根据这些定义创建和管理Bean。 - **Bean的实例化方式**:包括构造器实例化、静态工厂方法实例化和实例工厂方法...
### Spring Security 学习总结与应用实践 #### 引言 在深入了解Spring Security之前,我们需要认识到,传统的权限验证逻辑往往杂糅于业务逻辑之中,这种混合不仅使得代码难以维护,而且降低了系统的整体效率。每当...
总结来说,这个压缩包提供了一个学习和实践MVC、IOC和AOP概念的平台。对于初学者,这可以帮助理解这些设计模式和框架的基本工作原理;对于有经验的开发者,这是一个有趣的尝试,可以了解如何从头实现这些复杂机制。...