【what】
    1、一个开源框架,为了简化企业级应用开发而生,使用Spring可以使简单的JavaBean实现以前只有EJB才能实现的功能。
    Spring是一个IOC(DI)和AOP容器框架。

    2、特点:(1)轻量级:Spring是非侵入性的;(2)依赖注入(DI—dependency injection、IOC);(3)面向切面编程。(4)容器;(5)框架;(6)一站式;
    image.png

    3、搭建Spring开发环境:
    (1)把以下jar包加入到工程的classpath下:
    image.png
    (2)Spring的配置文件:一个典型的Spring项目需要创建一个或多个Bean配置文件,这些配置文件用于在Spring IOC容器里配置Bean。Bean的配置文件可以放在classpath下,也可以放在其他目录下。

    4、新建“Hello World”Spring项目
    image.png

    5、IOC和DI:(1)IOC:(2)DI:依赖注入,
    image.png

    6、配置Bean:基于XML文件的方式;基于注解的方式。
    image.png
    image.png
    Spring容器:(1)BeanFactory:IOC容器的基本实现,Spring框架的基础设施,面向Spring本身;(2)ApplicationContext:提供了更多的高级特性,是BeanFactory的子接口。面向使用Spring框架的开发者;几乎所有的应用场合都直接使用ApplicationContext;
    ps:无论使用何种方式,配置文件时都是相同的。

    ApplicationContext的主要实现类:(1)ClassPathXmlApplicationContext:从来路径下加载配置文件;(2)FileSystemXmlApplicationContext:从文件系统中加载配置文件;

    ConfigurableApplicationContext扩展于ApplicationContext,新增加两个主要方法:(1)refresh();(2)close();

    ApplicationContext在初始化上下文的时候就实例化所有单例的Bean;

    WebApplicationContext是
    image.png
    image.png
    image.png
    Spring支持3种依赖注入的方式:(1)属性注入:通过setter方法来进行注入;(2)构造器注入:;(3)工厂方法注入(很少使用,不推荐);
    image.png

    之间的关系
    1、继承:
    image.png
    2、依赖:depends-on属性
    image.png

    3、引用:

    作用域:scope=”<作用域类型>”
    1、singleton:无状态或者状态不可变的类适合使用单例模式
    2、prototype:非单例作用域
    3、request:
    4、session:
    5、globalSession

    image.png
    Spring IOC容器扫描的包:可以通过resource-pattern指定扫描的资源
    image.png

    image.png

    image.png

    基于注解的配置:
    (1)使用注解定义bean
    不管是XML还是注解,都是表达Bean定义的载体,其实质都是为Spring容器提供Bean定义的信息,在表现形式上都是将XML定义的内容通过类注解进行描述。
    Spring容器成功启动的三大要件是Bean定义信息、Bean实现类及Spring本身。如果采用基于XML的配置,则Bean定义信息和Bean实现类本身是分离的;如果采用基于注解的配置文件,则Bean定义信息通过在Bean实现类上标注注解实现。
    image.png

    扫描注解定义的Bean
    Spring提供了一个context命名空间。
    的base-package属性指定一个需要扫描的基类包,Spring容器将会扫描这个基类包里的所有类,并从类的注解信息中获取Bean的定义信息。
    可以使用resource-pattern属性过滤出特定的类。
    image.png
    image.png

    自动装配Bean
    (1)使用@Autowired进行自动注入
    (2)使用@Autowired的required属性
    (3)使用@Qualifier指定注入Bean的名称
    (4)对类方法进行标注
    (5)对集合类进行标注
    (6)对延迟依赖注入的支持
    (7)对标准注解的支持

    AOP:
    1、image.png
    image.png

    image.png

    image.png

    image.png
    image.png

    什么是框架? image.png


    image.png
    image.png

    Spring简介
    image.png

    image.png
    image.png
    image.png
    image.png

    IOC(配置、注解)
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png

    image.png
    image.png

    Bean(配置、注解)
    image.png
    (1)基于XML的配置
    (2)基于注解的配置

    image.png
    image.png

    image.png
    image.png

    image.png

    image.png
    image.png
    image.png
    image.png

    image.png
    image.png
    image.png
    image.png

    image.png
    image.png

    image.png
    image.png
    image.png
    image.png
    image.png

    image.png

    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png

    image.png
    image.png

    image.png

    image.png
    image.png

    image.png
    image.png

    image.png
    image.png

    image.png

    image.png

    image.png

    AOP(配置、注解)

    【How】
    1、构建RESTful Web服务
    了解如何使用Spring创建RESTful Web服务。

    2、使用Gradle构建Java项目
    了解如何使用Gradle构建Java项目。

    3、上传文件
    了解如何构建一个接受多部分文件上载的Spring应用程序。

    4、使用RabbitMQ进行消息传递
    了解如何使用Spring和RabbitMQ创建简单的发布 - 订阅应用程序。

    5、使用Spring Boot Actuator构建RESTful Web服务
    了解如何使用Spring Boot Actuator创建RESTful Web服务。

    6、保护Web应用程序
    了解如何使用Spring Security保护您的Web应用程序。

    7、集成数据
    了解如何构建一个使用Spring Integration获取数据,处理数据并将其写入文件的应用程序。

    8、使用JPA访问数据
    了解如何使用Spring Data JPA处理JPA数据持久性。

    9、将Spring Boot JAR应用程序转换为WAR
    了解如何将基于Spring Boot JAR的应用程序转换为WAR文件。

    10、使用Spring Boot构建应用程序
    了解如何使用最少的配置构建应用程序。

    11、使用AngularJS使用RESTful Web服务
    了解如何使用AngularJS检索网页数据。

    12、为RESTful Web服务启用跨源请求
    了解如何使用Spring创建支持跨源资源共享(CORS)的RESTful Web服务。

    13、使用REST访问Neo4j数据
    了解如何使用Spring Data REST处理RESTful,基于超媒体的数据持久性。

    14、生成SOAP Web服务
    了解如何使用Spring创建基于SOAP的Web服务。

    15、带Docker的Spring Boot
    了解如何使用Maven或Gradle从Spring Boot应用程序创建Docker容器

    16、服务注册和发现
    了解如何使用Eureka注册和查找服务

    17、断路器
    了解如何使用Hystrix优雅地降级服务

    18、使用MySQL访问数据
    了解如何在MySQL上设置和管理用户帐户,以及如何配置Spring Boot以在运行时连接到它。

    19、使用Google Cloud Pub / Sub进行消息传递
    了解如何使用Spring Integration通道适配器和Google Cloud Pub / Sub交换消息

    20、访问Vault
    了解如何使用Spring Vault从HashiCorp Vault加载机密

    21、将Spring Boot应用程序部署到Azure
    了解如何将Spring Boot应用程序部署到Azure。

    22、计划任务
    了解如何使用Spring安排任务。

    23、使用Maven构建Java项目
    了解如何使用Maven构建Java项目。
    Maven可以通过https://maven.apache.org/download.cgi下载为zip文件。只需要二进制文件,因此请查找指向apache-maven- {version} -bin.zip或apache-maven- {version} -bin.tar.gz的链接。
    下载zip文件后,将其解压缩到您的计算机上。然后将bin文件夹添加到路径中。
    要测试Maven安装,请从命令行运行mvn
    mvn -v
    pom.xml文件:

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    4. <modelVersion>4.0.0</modelVersion>
    5. <groupId>org.springframework</groupId>
    6. <artifactId>gs-maven</artifactId>
    7. <packaging>jar</packaging>
    8. <version>0.1.0</version>
    9. <properties>
    10. <maven.compiler.source>1.8</maven.compiler.source>
    11. <maven.compiler.target>1.8</maven.compiler.target>
    12. </properties>
    13. <dependencies>
    14. <!-- tag::joda[] -->
    15. <dependency>
    16. <groupId>joda-time</groupId>
    17. <artifactId>joda-time</artifactId>
    18. <version>2.9.2</version>
    19. </dependency>
    20. <!-- end::joda[] -->
    21. <!-- tag::junit[] -->
    22. <dependency>
    23. <groupId>junit</groupId>
    24. <artifactId>junit</artifactId>
    25. <version>4.12</version>
    26. <scope>test</scope>
    27. </dependency>
    28. <!-- end::junit[] -->
    29. </dependencies>
    30. <build>
    31. <plugins>
    32. <plugin>
    33. <groupId>org.apache.maven.plugins</groupId>
    34. <artifactId>maven-shade-plugin</artifactId>
    35. <version>2.1</version>
    36. <executions>
    37. <execution>
    38. <phase>package</phase>
    39. <goals>
    40. <goal>shade</goal>
    41. </goals>
    42. <configuration>
    43. <transformers>
    44. <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
    45. <mainClass>hello.HelloWorld</mainClass>
    46. </transformer>
    47. </transformers>
    48. </configuration>
    49. </execution>
    50. </executions>
    51. </plugin>
    52. </plugins>
    53. </build>
    54. </project>

    除了可选<packaging>元素之外,这是构建Java项目所必需的最简单的pom.xml文件。它包括项目配置的以下详细信息:

    • <modelVersion>。POM模型版本(总是4.0.0)。
    • <groupId>。项目所属的组或组织。通常表示为反向域名。
    • <artifactId>。要赋予项目库工件的名称(例如,其JAR或WAR文件的名称)。
    • <version>。正在构建的项目版本。
    • <packaging> - 如何打包项目。对于JAR文件打包,默认为“jar”。使用“war”进行WAR文件打包。

    在选择版本控制方案时,Spring建议采用语义版本控制方法。

    要尝试构建,请在命令行中发出以下命令:
    mvn编译
    这将运行Maven,告诉它执行编译目标。完成后,您应该在target / classes目录中找到已编译的.class文件。
    由于您不太可能希望直接分发或使用.class文件,因此您可能希望改为运行目标:
    mvn包
    包装目标将编译Java代码,运行任何测试,并通过包装内的一个JAR文件中的代码终止上升的目标目录。JAR文件的名称将基于项目<artifactId><version>。例如,给定之前的最小pom.xml文件,JAR文件将命名为gs-maven-0.1.0.jar
    如果您已将<packaging>“jar” 的值更改为“war”,则结果将是目标目录中的WAR文件而不是JAR文件。
    Maven还在本地计算机上维护了一个依赖存储库(通常位于主目录中的.m2 / repository目录中),以便快速访问项目依赖项。如果您想将项目的JAR文件安装到该本地存储库,那么您应该调用install目标:
    mvn安装

    在pom.xml文件里加上以下依赖:

    <dependencies>
            <dependency>
                <groupId>joda-time</groupId>
                <artifactId>joda-time</artifactId>
                <version>2.9.2</version>
            </dependency>
    </dependencies>
    

    这个XML块声明了项目的依赖项列表。具体来说,它声明了Joda Time库的单一依赖项。在<dependency>元素内,依赖关系坐标由三个子元素定义:

    • <groupId> - 依赖项所属的组或组织。
    • <artifactId> - 需要的库。
    • <version> - 所需库的特定版本。

    默认情况下,所有依赖项都作为compile依赖项确定范围。也就是说,它们应该在编译时可用(如果您正在构建WAR文件,包括在WAR的/ WEB-INF / libs文件夹中)。此外,您可以指定一个<scope>元素以指定以下范围之一:

    • provided - 编译项目代码所需的依赖关系,但将由运行代码的容器(例如,Java Servlet API)在运行时提供。
    • test - 用于编译和运行测试的依赖关系,但不是构建或运行项目的运行时代码所必需的依赖关系。

    现在,如果你运行mvn compile或者mvn package,Maven应该从Maven Central存储库解析Joda Time依赖关系,并且构建将成功。

    24、使用LDAP验证用户
    了解如何使用LDAP保护应用程序。

    25、使用Neo4j访问数据
    了解如何在Neo4j的NoSQL数据存储中保留对象和关系。

    26、与JMS通信
    了解如何使用JMS代理发布和订阅消息。

    27、构建超媒体驱动的RESTful Web服务
    了解如何使用Spring创建超媒体驱动的RESTful Web服务。

    28、使用Pivotal GemFire缓存数据
    了解如何在GemFire中缓存数据。

    29、使用MongoDB访问数据
    了解如何在MongoDB中保留数据。

    30、 创建异步方法
    了解如何创建异步服务方法。

    31、使用WebSocket构建交互式Web应用程序
    了解如何通过WebSocket在浏览器和服务器之间发送和接收消息

    32、使用rest.js使用RESTful Web服务
    了解如何使用rest.js检索网页数据。

    33、使用SOAP Web服务
    了解如何创建使用基于WSDL的服务的客户端

    34、使用REST访问MongoDB数据
    了解如何使用Spring Data REST处理RESTful,基于超媒体的数据持久性。

    35、使用Spring缓存数据
    了解如何使用Spring在内存中缓存数据

    36、使用IntelliJ IDEA使用入门指南
    了解如何使用IntelliJ IDEA处理入门指南。

    37、集中配置
    了解如何从外部集中式源管理应用程序设置

    38、使用功能区和Spring Cloud进行客户端负载平衡
    动态支持即将上传和下降的服务,而不会中断客户端

    39、创建多模块项目
    了解如何构建库并将其打包以供Spring Boot应用程序使用

    40、构建反应性RESTful Web服务
    了解如何使用Reactive Spring创建RESTful Web服务。

    41、保险柜配置
    了解如何在HashiCorp Vault中存储和检索应用程序配置详细信息

    42、建立一个网关
    了解如何配置网关

    43、使用RESTful Web服务
    了解如何使用Spring的RestTemplate检索网页数据。

    44、使用JDBC和Spring访问关系数据
    了解如何使用Spring访问关系数据。

    45、与Redis消息传递
    了解如何将Redis用作消息代理。

    46、验证表单输入
    了解如何使用Spring执行表单验证。

    47、创建批处理服务
    了解如何创建基本的批处理驱动解决方案。

    48、访问Pivotal GemFire中的数据
    了解如何使用Gemfire的数据结构构建应用程序。

    49、管理交易
    了解如何使用事务包装代码的关键部分。

    50、使用Spring MVC提供Web内容
    了解如何使用Spring MVC和Thymeleaf创建网页。

    51、处理表格提交
    了解如何使用Spring创建和提交Web表单。

    52、使用STS使用入门指南
    了解如何使用Spring Tool Suite(STS)导入入门指南。

    53、使用jQuery使用RESTful Web服务
    学习如何使用jQuery检索网页数据。

    54、使用REST访问JPA数据
    了解如何使用Spring Data REST处理RESTful,基于超媒体的数据持久性。

    55、使用REST访问Pivotal GemFire中的数据
    了解如何使用Spring Data REST处理RESTful,基于超媒体的数据持久性。

    56、从STS部署到Cloud Foundry
    了解如何从STS将Spring应用程序部署到Cloud Foundry

    57、使用Vaadin创建CRUD UI
    使用Vaadin和Spring Data JPA构建动态UI

    58、路由和过滤
    了解如何使用Netflix Zuul将请求路由和过滤到微服务

    59、测试Web层
    学习如何测试Spring Boot应用程序和MVC控制器。

    60、使用Restdocs创建API文档
    了解如何使用Spring Restdocs为HTTP端点生成文档

    61、消费者驱动的合同
    了解如何使用合同存根并从另一个Spring应用程序中使用该合同

    62、 使用Redis反复访问数据
    了解如何与Redis和Spring Data进行反应性接口

    【专题指南】
    Spring安全架构
    Spring Security的主题指南,这些位如何组合以及它们如何与Spring Boot交互

    Spring Boot Docker
    使用Docker的主题指南以及如何为Spring Boot应用程序创建容器映像

    【教程】
    使用Spring构建REST服务
    了解如何使用Spring轻松构建RESTful服务

    Spring Boot和OAuth2
    关于“社交”登录和Facebook和Github单点登录的教程

    Spring Security和Angular
    有关如何将Spring Security与具有各种后端体系结构的单页面应用程序一起使用的教程,范围从简单的单一服务器到具有OAuth2身份验证的API网关。

    使用Spring Boot和Kotlin构建Web应用程序
    了解如何使用Spring,Kotlin,Junit 5和JPA轻松构建和测试Web应用程序

    React.js和Spring Data REST
    基于Greg Turnquist的5部分博客系列的教程