Spring5.X框架基础

第一章:Spring基础

Spring概述

Spring 是一个开源的Java企业级应用开发框架。是一个分层的轻量级一站式(full-stack)框架,可以叫做家族型的框架,也可以叫做Spring全家桶。

核心

IOC 控制反转(Inversion of Control ):Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象,后续创作者将描述改为DI(Dependency Injection,依赖注入)。

AOP 面向切面(AOP):面向切面的编程,把应用业务逻辑和系统服务分开。

优点

  • 作为容器,Spring 包含并管理应用中对象的生命周期和配置。
  • 面向切面编程能帮助我们无耦合的实现日志记录,性能统计,安全控制
  • 提供了一套MVC框架,叫SpringMVC,互联网企业主流开发框架。
  • Spring 提供一个持续的事务管理接口,能非常简单的帮我们管理数据库事务。
  • 支持各种开源框架,可以与第三方框架(如Hibernate、Struts、MyBatis)无缝集成,而且自己也提供了一套JDBC访问模板来方便数据库访问。
  • 能方便的与Java EE(如Java Mail、任务调度)整合,与更多技术整合(比如缓存框架)
  • 异常处理:Spring 提供方便的API把具体技术相关的异常(比如由JDBC,Hibernate or JDO抛出的)转化为一致的unchecked 异常。
  • Junit支持,可以使用Junit进行测试

Spring 的框架结构

Spring5.X框架基础_第1张图片

Data Access/Integration层:包含有JDBC、ORM、OXM、JMS和Transactions模块。

Web:包含了WebSocket、Web、WebMVC、WebFlux模块。

AOP:模块提供了一个符合AOP联盟标准的面向切面编程的实现。

Aspects:集成自Aspects框架,主要为AOP提供多种实现

Instrument:基于JavaSE中的java.lang.instrument进行设计,也是为AOP的实现提供支持

Messaging:提供消息协议支持

Core Container(核心容器):包含有Beans、Core、Context和Expression(SpEL)模块。

Test:支持使用JUnit和TestNG对Spring组件进行测试。

Spring官网介绍

  • Spring 官网:https://spring.io/
  • Spring 文档:https://spring.io/guides
  • Spring IDE: https://spring.io/tools/sts
  • Spring Project: https://spring.io/projects
  • 项目快速生成器(SpringBoot):https://start.spring.io/

第一个Spring程序

  1. 新建一个空的 Java maven项目,命名为【spring01】

  2. 修改pom.xml文件,增加如下依赖

      <properties>
      	<spring.version>5.1.5.RELEASEspring.version>
      properties>
    
      <dependencies>
      	
    	<dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-coreartifactId>
            <version>${spring.version}version>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-beansartifactId>
            <version>${spring.version}version>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-contextartifactId>
            <version>${spring.version}version>
        dependency>
      dependencies>
    
  3. 在【src/main/java】下新建一个【com.hliedu.pojo.Drinks】类:

    package com.hliedu.pojo;
    /**
     * - 饮品POJO
     * 
     * - 带你轻松学Java:恒骊学堂
     * www.hliedu.com
     * QQ群:107184365
     *
     */
    public class Drinks {  
        private String fruit;   // 类型
        private String sugar;   // 糖分描述
        private String size;    // 大小杯    
        private int money;		//金额
        /* setter and getter */
    }
    
  4. 在 【src/main/resources】 目录下新建一个 【applicationContext.xml】 文件,通过 xml 文件配置的方式装配我们的 bean:

    
    <beans xmlns="http://www.springframework.org/schema/beans"
           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.xsd">
    
        <bean name="drinks" class="com.hliedu.pojo.Drinks">
            <property name="fruit" value="橙子"/>
            <property name="sugar" value="多糖"/>
            <property name="size" value="超大杯"/>
        bean>
    beans>
    
  5. 在 【src/test/java】下新建一个【com.hliedu.test.DrinksTest】类:

    package com.hliedu.test;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    import com.hliedu.pojo.Drinks;
    
    public class DrinksTest {
    
    	public static void main(String[] args) {
    		ApplicationContext  context = new 
    				ClassPathXmlApplicationContext("applicationContext.xml");
    		Drinks drinks = (Drinks)context.getBean("drinks");
            
    		String fruit = drinks.getFruit();
    		String size = drinks.getSize();
    		String sugar = drinks.getSugar();
    		System.out.println(drinks);
    		System.out.println("果汁口味:" + fruit +",大小:" 
    							+ size + ",是否加糖:" + sugar);
    	}
    }
    
    
  6. 运行测试代码,可以正常拿到 xml 配置的 bean

Spring5.X框架基础_第2张图片

  • 总结:

  • 传统的方式:
    通过new 关键字主动创建一个对象

  • IOC方式:
    对象的生命周期由Spring来管理,直接从Spring那里去获取一个对象。 IOC是反转控制 (Inversion Of Control)的缩写,就像控制权从本来在自己手里,交给了Spring。

Spring5.X框架基础_第3张图片

​ 思考:这种方式感觉比直接实例化麻烦很多,但为什么这种方式却作为了Spring的核心思想?

你可能感兴趣的:(+++++Java+++++)