Spring基础理解

Spring 框架是一个分层架构,由 7 个定义良好的模块组成。Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式。

组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下: 
核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转 (IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。 
Spring 上下文:Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。 
Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用                          Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。 
Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向                                JDBC 的异常遵从通用的 DAO 异常层次结构。 
Spring ORM:Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。 
Spring Web 模块:Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以,Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。 
Spring MVC 框架:MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。 
                              Spring 框架的功能可以用在任何 J2EE 服务器中,大多数功能也适用于不受管理的环境。Spring 的核心要点是:支持不绑定到特定 J2EE 服务的可重用业务和数据访问对象。毫无疑问,这样的对象可以在不同 J2EE 环境 (Web 或                                         EJB)、独立应用程序、测试环境之间重用。

Spring框架的优势 
使J2EE易用和促进好编程习惯。 
Spring不重新开发已有的东西。因此,在Spring中你将发现没有日志记录的包,没有连接池,没有分布事务调度。这些均有开源项目提供(例如Commons Logging 用来做所有的日志输出,或Commons DBCP用来作数据连接池),或由你的应用程序服务器提供。因为同样的的原因,我们没有提供O/R mapping层,对此,已有好的解决办法如Hibernate和JPA。 
使已存在的技术更加易用。 
例如,尽管我们没有底层事务协调处理,但我们提供了一个抽象层覆盖了JTA或任何其他的事务策略。 
没有直接和其他的开源项目竞争。 
例如,许多开发人员,我们从来没有为Struts高兴过,并且感到在MVC框架中还有改进的余地。在某些领域,例如轻量级的IoC容器和AOP框架,Spring有直接的竞争,但是在这些领域还没有已经较为流行的解决方案。(Spring在这些区域是开路先锋。) 
Spring在应用服务器之间是可移植的。保证可移植性总是一项挑战,但是Spring避免任何特定平台或非标准化,并且支持在WebLogic,Tomcat,Resin,JBoss,WebSphere和其他的应用服务器上的用户。 
方便解耦,简化开发。 
通过Spring提供的IoC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。有了Spring,用户不必再为单实例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用。 
AOP编程的支持。 
通过Spring提供的AOP功能,方便进行面向切面的编程,许多不容易用传统OOP实现的功能可以通过AOP轻松应付。 
声明式事务的支持 
  在Spring中,我们可以从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活地进行事务的管理,提高开发效率和质量。 
方便程序的测试 
  可以用非容器依赖的编程方式进行几乎所有的测试工作,在Spring里,测试不再是昂贵的操作,而是随手可做的事情。 
方便集成各种优秀框架 
  Spring不排斥各种优秀的开源框架,相反,Spring可以降低各种框架的使用难度,Spring提供了对各种优秀框架(如Struts,Hibernate)等的直接支持。 
降低Java EE API的使用难度 
Spring对很多难用的Java EE API(如JDBC,JavaMail,远程调用等)提供了一个薄薄的封装层,通过Spring的简易封装,这些Java EE API的使用难度大为降低。

下载、设置Spring 
http://springframework.org/

准备Spring设计环境

编写第一个Spring程序 
HelloWorld接口:

Java代码  

    1. /**
    2. *
    3. * @Copyright(C),2009-2010 SISE Java Team.
    4. * @Author:easinchu
    5. * @Email:[email protected]
    6. * @Description:
    7. */
    8. public interface HelloWorld {
    9. public void sayHello();
    10. }

HelloWorldBean实现类:

Java代码  

    1. /**
    2. *
    3. * @Copyright(C),2009-2010 SISE Java Team.
    4. * @Author:easinchu
    5. * @Email:[email protected]
    6. * @Description:
    7. */
    8. public class HelloWorldBean implements HelloWorld{
    9. private String helloWorld;
    10. public void setHelloWorld(String helloWorld) {
    11. this.helloWorld = helloWorld;
    12. }
    13. public void sayHello() {
    14. System.out.println(helloWorld);
    15. }
    16. }  
      1. Spring XML配置文件ioc-config.xml:

        Xml代码  

        1. <bean id="helloWorldBean" class="cn.com.sise.firstapp.HelloWorldBean">
        2. <property name="helloWorld">
        3. <value>Hello,Welcome To Spring World!</value>
        4. </property>
        5. </bean>

        测试类: 

        Java代码  

          1. import org.springframework.beans.factory.BeanFactory;
          2. import org.springframework.beans.factory.xml.XmlBeanFactory;
          3. import org.springframework.core.io.ClassPathResource;
          4. import org.springframework.core.io.Resource;
          5. /**
          6. *
          7. *@Copyright(C),2009-2010 SISE Java Team.
          8. *@Author:easinchu
          9. *@Email:[email protected]
          10. *@Description:采用Spring的BeanFactory构造IoC容器.
          11. */
          12. public class FirstSpringDemo {
          13. public static void main(String []args) {
          14. //-----------BeanFactory IoC容器---------------------//
          15. //从classpath路径上装载XML的配置信息
          16. Resource resource = new ClassPathResource("ioc-config.xml");
          17. //实例化IOC容器,此时容器并未实例化beans-config.xml所定义的各个受管bean.
          18. BeanFactory factory = new XmlBeanFactory(resource);
          19. /
          20. //获取受管bean
          21. HelloWorld hello = (HelloWorld)factory.getBean("helloWorldBean");
          22. hello.sayHello();
          23. }
          24. }
时间: 2024-10-14 08:00:43

Spring基础理解的相关文章

Spring 基础,用小例子来理解它

1.什么是Spring? 我们都知道框架,我学的就是struts2,mybatis和spring 三大框架 struts2处于表现层和业务处理 mybatis处理业务处理和数据访问 而Spring是无处不在的. 以上是我对Spring的理解 Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来.它是为了

spring 基础学习笔记

spring 初始理解 1.spring 只是一个框架,是一些相应的 jar包,相当于一个项目的管理者,各种其他框架的中介,项目的监管机构. 2.主要特点是依赖注入DI.面向切面AOP,控制反转IOC 3.核心:加载applicationContext.Xml配置文件,生成applicationContext对象,在配置文件中的bean也会生成各种bean对象,这些bean对象相当于配置文件中的各个类的初始化,或者框架配置, spring通过applicationContext这个对象去管理这些

spring基础知识(三)——aop

spring基础知识(三)--aop面向切面编程 1.概念术语 aop面向切面编程(Aspect ariented Programming) 在开始之前,需要理解Spring aop 的一些基本的概念术语(总结的个人理解,并非Spring官方定义): 切面(aspect):用来切插业务方法的类. 连接点(joinpoint):是切面类和业务类的连接点,其实就是封装了业务方法的一些基本属性,作为通知的参数来解析. 通知(advice):在切面类中,声明对业务方法做额外处理的方法. 切入点(poin

Spring基础介绍

Spring属于轻量级还是重量级框架? 这需针对使用Spring的功能而言,比如我们常使用其核心服务整合SSH,这样则为轻量级. 如果使用其大部分服务则可以理解为重量级. 普通JAVA项目环境下预加载Spring  — applicationContext.xml AbstractApplicationContext cxt = new ClassPathXmlApplicationContext("*.xml"); ApplicationContext cxt=new ClassPa

Spring 基础知识

Spring架构简单描述 原文:https://www.shiyanlou.com/courses/document/212 Spring 概述 1. Spring 是什么 Spring是一个开源的轻量级Java SE(Java 标准版本)/Java EE(Java 企业版本)开发应用框架,其目的是用于简化企业级应用程序开发.应用程序是由一组相互协作的对象组成.而在传统应用程序开发中,一个完整的应用是由一组相互协作的对象组成.所以开发一个应用除了要开发业务逻辑之外,最多的是关注如何使这些对象协作

【面试宝典】 spring基础面试必问

前言: 2018,2019年这两年,互联网行业都不怎么景气,我想最近大家对于某某公司劝退员工的事,都有所耳闻,再加上19年快结束了,又有不少人得提前回家过年(自己领悟我这句话的意思,懂的自然懂) 有人私信我,问我有没有相关面试方面的文章,所以,把spring基础2019年面试可能问到的题目整理了一下.我遇到不少社友在问,为什么,在我朋友圈里面,很多技术跟我差不多的,工资有不少都比我高,运气算一个因素,还有一个因素就是面试.给大家分享一个真实的案例把,这样大家才能更清楚的明白面试的重要性. 一个真

Spring基础系列11 -- 自动创建Proxy

Spring基础系列11 -- 自动创建Proxy 转载:http://www.cnblogs.com/leiOOlei/p/3557964.html 在<Spring3系列9- Spring AOP——Advice>和<Spring3系列10- Spring AOP——Pointcut,Advisor拦截指定方法>中的例子中,在配置文件中,你必须手动为每一个需要AOP的bean创建Proxy bean(ProxyFactoryBean). 这不是一个好的体验,例如,你想让DAO层

spring深入理解二(关于容器工作源码)

spring基本工作原理如下: 1.查找bean配置文件 2.加载bean配置文件并解析生成中间表示BeanDefinition 3.注册beanDefinition 4.如果是单例或lazy-init=false,则直接生成bean spring将 1.查找bean配置文件 2.加载bean配置文件并解析生成中间表示BeanDefinition 3.注册beanDefinition 这三部分开,可以提供更多的定制给用户. spring将配置文件之类的文件资源抽象成一个Resource,封装了g

Spring基础系列12 -- Spring AOP AspectJ

Spring基础系列12 -- Spring AOP AspectJ 转载:http://www.cnblogs.com/leiOOlei/p/3613352.html 本文讲述使用AspectJ框架实现Spring AOP. 再重复一下Spring AOP中的三个概念, Advice:向程序内部注入的代码. Pointcut:注入Advice的位置,切入点,一般为某方法. Advisor:Advice和Pointcut的结合单元,以便将Advice和Pointcut分开实现灵活配置. Aspe