• 01.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 的框架结构

     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>

    在 【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);
        }
    }
    • 总结:

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

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

     

  • 相关阅读:
    在scrapy的spiders文件中设置请求时间间隔
    Python中map和reduce函数
    正则表达式
    eslint下的rules一些规则(转:备用)
    谷歌云设置xshell登录
    (过期)活动赠送的国外云服务器VPS【速度极慢,适合小白练手】
    关于服务器的那些事~~~
    call()和appy()的区别及常用场景
    javascript中使用this关键字的大总结
    懵懵懂懂、迷迷糊糊
  • 原文地址:https://www.cnblogs.com/mt-blog/p/13492823.html
Copyright © 2020-2023  润新知