一、初识Spring

知识点:

  • bean容器
  • Spring核心模块
  • Spring生态系统
  • Spring新功能

名词:

  • 依赖注入(Dependency Injection, DI)
  • 面向切面编程(Aspect-Oriented Programming,AOP)
  • 简单老式Java对象(Plain Old Java Object, POJO)
  • 样板式代码(boilerplate code)
  • 数据访问对象(Data Access Object, DAO)
  • Java数据库连接(Java Database Connectivity,JDBC)

1. Spring初衷

bean或者JavaBean:表示应用组件。

1.1 spring四点简化策略

  • 基于POJO的轻量级和最小侵入性编程
  • 通过依赖注入和面向接口实现松耦合
  • 基于切面和惯例进行声明式编程
  • 通过切面和模板减少样板式代码

1.1.1 非侵入

package com.xucece.test;

public class HelloWorld{
    public String sayHello(){
        return "hello, world!";
    }
}

以上代码看不出有spring框架的痕迹,就是普通的Java的类与方法的写法,并没有为了用框架而导致被迫去修改代码的风格。

1.1.2 依赖注入

现在更多的是一种编程技巧和设计模式理念。

DI功能是如何实现的

​有意义的应用都是需要由两个以及更多的类组成,类之间相互协作调用来完成特定的业务逻辑。
传统做法:每个对象负责管理与自己相互协作的对象(即它所依赖的对象)的引用,从而导致高度耦合和难以测试的代码。
耦合具有两面性(two-headed beast)。一方面,紧密耦合的代码难以测试、难以复用、难以理解,并且会出现“打地鼠”式的bug,即改一个出现另外一堆bug;另一方面,一定程度也是必须的——完全0耦合的代码就是一个个独立的个体,什么都做不了。为了实现功能,类之间必须实现一定意义的交互。因此,耦合是必须的,但是应当尽量的低耦合。

DI:对象的依赖关系将由系统中负责协调各对象的第三方组件在创建对象的时候在进行设定。对象无需自行创建或管理他们的依赖关系,依赖关系将被自动注入到需要它们的对象中去。

1.1.3 应用切面

面向切面编程(Aspect-Oriented Programming,AOP):允许把遍布应用各处的功能分离出来,形成可重用组件。

​ 除了自身逻辑,代码还经常需要记录日志等其他系统融入到核心业务,这些系统服务通常被称为横向关注点
AOP使这些服务模块化,并以声明的方式将它们应用到它们需要影响的组件中去。所造成的结果就是这些组件会有更高的内聚性并且会更加的关注自身的业务。

1.1.4 使用模板消除样板式代码

JDBCTemplate

1.2 容纳Bean

1.2.1 使用应用上下文

名称 简介
AnnotationConfigApplicationContext 从一个或多个基于Java的配置类中加载Spring应用上下文
AnnotationConfigWebApplicationContext 从一个或多个基于Java的配置类中加载Spring Web应用上下文
ClassPathXmlApplicationContext 从类路径下的一个或多个XML配置文件中加载上下文定义,把应用上下文的定义文件作为类资源
FileSystemXmlApplicationContext 从文件系统下的一个或多个XML配置文件中加载上下文定义
XmlWebApplicationContext 从Web应用下的一个或多个XML配置文件中加载上下文定义

1.3 理解Spring模块


以上为spring模块图

  • Spring核心容器

      容器是Spring最核心的部分,它管理着Spring应用中bean的创建、配置和管理。
    
  • AOP模块

      Spring为AOP即面向切面编程提供了丰富的支持。该模块是Spring应用系统中开发切面的基础。与DI一样,AOP也帮助应用对象进行解耦。
    
  • 数据访问与集成

      Spring的JDBC和DAO模块抽象了这些样板代码,使数据库代码变得简单明了,还可以避免因为关闭数据库资源失败而引发的问题。
    
  • Web与远程调用

      MVC(Model-View-Controller)模式是一种被普遍接受的构建Web应用的方法,它可以帮助用户将界面逻辑与应用逻辑分离。
    
  • Instruction

      Spring的Instruction模块提供了为JVM添加代理的功能。即为Tomcat提供了一个织入代理,能够为Tomcat传递类文件,如同类被加载一样。
    
  • 测试

      Spring为使用JNDI、Servlet和Portlet编写单元测试提供了一系列的mock对象实现。

猜你喜欢

转载自www.cnblogs.com/hasz/p/12945412.html
今日推荐