学spring总结(Ioc)

今天看了海涛的<跟我学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的方法,而且使用实例工厂方法允许指定方法参数,方式和使用构造器方式一样

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值