Java之旅Spring框架学习(1)——掀起你的盖头来

  我们知道Spring和hibernate的建立与项目无关,可以随意建立项目。而Struts只能是web项目。今天我们来学习Spring,Spring是一种轻量级的框架,因为它不需要实现和继承就可以管理,故而我们称之为轻量级,上篇的博客已经对Spring包的目录结构进行了一个介绍,大家对于spring也应该有个大致的理解了。

 1.      框架介绍

  提到Spring,首先不得不提的就是IOC容器,我们先不说这个,先来看看spring框架图

 

  从上面的图我们可以看出Spring不仅仅是一个开源的框架,而且是一个分层的架构由上面的七大部分组成。并且每个模块可以独立存在也可以与其他一个或者多个进行相应的联系。我们来详细了解一下吧。

  l  Spring Core(核心容器)

  封装包是框架的最基础部分,提供IoC和依赖注入特性。这里的基础概念是BeanFactory,它提供对Factory模式的经典实现来消除对程序性单例模式的需要,并真正地允许你从程序逻辑中分离出依赖关系和配置。

  l  Spring Context(上下文)

  封装包构筑于Core封装包的坚固基础上:它提供了用一种框架风格的方式来访问对象,Spring上下文是一个配置文件,向Spring框架提供上下文信息,Context封装包继承了beans包的功能,还增加一些功能,比如JNDI,EJB,校验,国际化等。

  l  Spring AOP

   Spring AOP直接将面向方面编程的功能集成到了Spring框架中,这样就可以将spring管理的任何对象来支持AOP,可以很方便的定义例如方法拦截器(method-interceptors)和切点(pointcuts),从逻辑上讲,从而减弱代码的功能耦合,清晰的被分离开。

  l  Spring DAO

  DAO 提供了JDBC的抽象层,它可消除冗长的JDBC编码和解析数据库厂商特有的错误代码。并且,JDBC 封装包还提供了一种比编程性更好的声明性事务管理方法,不仅仅是实现了特定接口,而且对所有的POJOs(plain old Javaobjects)都适用。

  l  Spring ORM

  ORM 封装包提供了常用的“对象/关系”映射APIs的集成层。其中包括JPA、JDO、Hibernate 和 iBatis 。利用ORM封装包,可以混合使用所有Spring提供的特性进行“对象/关系”映射,如前边提到的简单声明性事务管理。

  l  Spring Web

  Spring中的 Web 包提供了基础的针对Web开发的集成特性,例如多方文件上传,利用Servlet listeners进行IoC容器初始化和针对Web的application context。当与WebWork或Struts一起使用Spring时,这个包使Spring可与其他框架结合。

  l  Spring MVC

  这个体现的是MVC的设计模式思想,它是一个全功能的构建Web应用程序的MVC实现,将页面显示与业务逻辑清晰的分离开来,与Struts1相比,Spring MVC容纳了大量的视图技术,比如JSP、Velocity等等。

 2.      Spring中对象的获取

  说道Spring的好处首先不得不提的就是它容器的IOC(Inversion of Control)机制:控制反转和依赖注入;控制反转模式也可以称之为依赖注入,它只是描述对象之间是怎么存在,但是不负责创建具体的对象。

  换句话说就是在代码中不直接与相应的对象进行联系,但是在配置文件中描述了一个服务于另一个服务之间的相关关系,或者说是定义了一套业务逻辑之间是如何进行沟通的。这个联系的过程统统由Spring 容器进行管理。

  Spring容器的基础是org.springframework.beans及org.springframework.context包,其中ApplicationContext 是BeanFactory的扩展,功能得到了进一步增强。

  BeanFactory提供了配制框架及基本功能,而 ApplicationContext 则增加了更多支持企业核心内容的功能。 ApplicationContext完全由BeanFactory扩展而来,因而BeanFactory所具备的能力和行为也适用于ApplicationContext。

  ApplicationContext和BeanFactory是IOC的基础,将处理事情的业务逻辑从应用程序代码移到了框架。

  BeanFactory(是org.springframework.beans.factory.BeanFactory)使用:

  比如我们定义的Spring配置文件的名字mybean.xml;

  获取到定义相应bean的工厂BeanFactory; 

BeanFactoryfactory = new XMLBeanFactory(new FileInputSteam("mybean.xml"));

  在 XML 文件中定义的 Bean 是被消极加载的,这意味在需要 bean 之前,bean 本身不会被初始化。调用的话采用方法getBean()。 

TestBean testbean= (TestBean) factory.getBean("testbean");

  每个 bean 的定义都可以是 POJO (用类名和 JavaBean 初始化属性定义)或 FactoryBean。这里的bean是我们自己定义的类,在Spring进行的配置后我们可以在这里进行相应获取。

  ApplicationContext(是org.springframework.context.ApplicationContext)使用:

  比如我们定义的Spring配置文件的名字applicationContext.xml;

  获取到定义相应bean的上下文ApplicationContext;  

ApplicationContextac = new ClassPathXmlApplicationContext("applicationContext.xml");

  同理ApplicationContext也是需要调用getBean的方法的。 

TestActiontestAction = (TestAction) ac.getBean("testAction");

 3.      小结

  这里讲解一下大的方面的,下面我们会 通过例子进行相关的讲解~

 

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值