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框架结构图

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程序
  1. 新建一个空的 Java maven项目,命名为【spring01】

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

      <properties>
      	<spring.version>5.1.5.RELEASE</spring.version>
      </properties>
    
      <dependencies>
      	<!-- bean context core expression -->
    	<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <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:

    <?xml version="1.0" encoding="UTF-8"?>
    <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

在这里插入图片描述

  • 总结:

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

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

在这里插入图片描述

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

君哥聊编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值