Spring

Spring

  1. Spring概述

    是一个开源框架,是为了解决企业应用程序开发复杂性而创建的
    Spring是潜在地一站式解决方案,定位于与典型应用相关的大部分基础结构
    Spring致力于提供一种方法管理你的业务对象
    Spring是全面的和模块化的
    它的设计从底部帮助你编写易于测试的代码

  2. Spring特征

    轻量
    从大小与开销两方面而言Spring都是轻量的
    容器
    Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器
    控制反转
    不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它
    面向切面
    允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发

  3. 优点
    低侵入式设计,代码污染极低
    独立于各种应用服务器,基于Spring框架的应用,可以真正实现Write Once,Run Anywhere的承诺
    Spring的DI机制降低了业务对象替换的复杂性,提高了组件之间的解耦
    Spring的AOP支持允许将一些通用任务如安全、事务、日志等进行集中式管理,从而提供了更好的复用
    Spring的ORM和DAO提供了与第三方持久层框架的良好整合,并简化了底层的数据库访问
    Spring并不强制应用完全依赖于Spring,开发者可自由选用Spring框架的部分或全部

  4. Spring7个模块

    Spring Core核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转(IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。

    Spring Context 上下文: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)、独立应用程序、测试环境之间重用。

  5. Bean和Spring IOC容器
    由Spring IOC容器管理的那些组成你应用程序的对象我们就叫它Bean, Bean就是由Spring容器初始化、装配及管理的对象。
    Bean对象的两种模型 :
    单态 模型提供了具有特定名称的对象的共享实例,可以在查询时对其进行检索。Singleton 是默认的也是最常用的对象模型。对于无状态服务对象很理想。
    原型 模型确保每次检索都会创建单独的对象。在每个用户都需要自己的对象时,原型模型最适合。

  6. ApplicationContext接口

    BeanFactory接口
    BeanFactory接口提供了IoC容器最基本功能
    ApplicationContext接口
    扩展了BeanFactory,还提供了与Spring AOP集成、国际化处理、事件传播及提供不同层次的context实现

    常见的ApplicationContext实现类

    ClassPathXmlApplicationContext
    ApplicationContext实现,从classpath获取配置文件;
    BeanFactory beanFactory = new ClassPathXmlApplicationContext("classpath.xml");
    FileSystemXmlApplicationContext
    ApplicationContext实现,从文件系统获取配置文件。
    BeanFactory beanFactory = new FileSystemXmlApplicationContext("fileSystemConfig.xml");
    
    

    ApplicationContext常用方法

    Object getBean(String name) 
    根据名称返回一个Bean,客户端需要自己进行类型转换;
    T getBean(String name, Class<T> requiredType)
    根据名称和指定的类型返回一个Bean,客户端无需自己进行类型转换,如果类型转换失败,容器抛出异常;
    T getBean(Class<T> requiredType) 
    根据指定的类型返回一个Bean,客户端无需自己进行类型转换,如果没有或有多于一个Bean存在容器将抛出异常;
    Map<String, T> getBeansOfType(Class<T> type) 
    根据指定的类型返回一个键值为名字和值为Bean对象的 Map,如果没有Bean对象存在则返回空的Map。
    

    在applicationContext中配置Bea

    applicationContext.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:context="http://www.springframework.org/schema/context"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="
            http://www.springframework.org/schema/beans   
            http://www.springframework.org/schema/beans/spring-beans-4.0.xsd   
            http://www.springframework.org/schema/context   
            http://www.springframework.org/schema/context/spring-context-4.0.xsd">
       <bean id="hello" name="hello1" class="com.trkj.beans.HelloWorld"></bean>
    </beans>
    
  7. Spring零配置

    零配置
    零配置是指不需要在xml文件中配置Bean,而是借助注解实现
    配置Bean的注解
    @Component :标注一个普通的Spring Bean类。
    @Controller : 标注一个控制器组件类。
    @Service: 标注一个业务逻辑组件类。
    @Repository : 标注一个DAO组件类。

    applicationContext.xml自动扫描Bean:

    <!--自动扫描Bean-->
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:context="http://www.springframework.org/schema/context"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="
            http://www.springframework.org/schema/beans   
            http://www.springframework.org/schema/beans/spring-beans-4.0.xsd   
            http://www.springframework.org/schema/context   
            http://www.springframework.org/schema/context/spring-context-4.0.xsd">
       	<context:annotation-config />
    	<context:component-scan base-package="com.trkj.*" />
    </beans>
    
posted @ 2021-11-29 14:14  钟文涛  阅读(71)  评论(0)    收藏  举报