主要是一些概念
1. Spring基础
1.Spring概述
Spring是一个轻量级的java开发框架,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。它是一个分层的JavaSE/EEfull-stack(一站式)轻量级开源框架,为开发java应用程序提供了全面的基础架构支持
1.1 Spring的体系结构
Spring的功能模块被有组织地分散到约20个模块中,这些模块分布在核心容器、数据访问/集成(Data Access/Integration)、Web、AOP(Aspect Oriented Programming,面向切面的编程)、植入(INstrumentation)、消息传输(Messaging)和测试(Test)中,如下图所示
1.核心容器
- Spring-core:提供了框架的基本组成部分,包括控制反转(Inversion of control,IoC)和依赖注入(Dependency Injection,DI)功能
- Spring-beans:提供了BeanFactory,是工厂模式的一个经典实现,Spring将管理对象称为Bean
- Spring-context:建立在Core和Beans基础上,提供一个框架式的对象访问方式,是访问定义和配置的任何对象的媒介。
- Spring-context-support:支持整合第三方库到Spring应用程序上下文,特别是用于高速缓存和任务调度的支持
- Spring-expression:提供了强大的表达式语言去支持运行时查询和操作对象图
2.AOP和Instrumentation
- Spring-aop:提供了一个符合AOP要求的面向切面的编程实现,允许定义方法拦截器和切入点,将代码按照功能进行分离,以便干净地解耦
- Spring-aspects:提供了与AspectJ地集成功能,AspectJ是一个功能强大且成熟的AOP框架
- Spring-instrument:提供了类植入(Instrumentation)支持和类加载器的实现,可以在特定的应用服务器中使用。
3.消息
4.数据访问/集成
- Spring-jdbc
- Spring-tx
- Spring-orm
- Spring-oxm
- Spirng-jms
5.Web
- Spring-web
- Spring-webmvc
- Spring-websocket
- Spring-webmvc-portlet
- Spring-webflux
6.测试
- Spring-test
2. Spring Boot入门
1.Spring boot概述
1.1 什么是Spring Boot
Spring boot是一个全新框架,设计目的是用来简化新Spring应用的初始搭建以及开发过程。使用“约定优于配置(Convention Over Configuration,COC)”的理念
1.2 Spring Boot的优点
- 编码更简单,推荐使用注解
- 配置更快捷,具有自动配置、快速搭建项目、快速集成第三方技术的能力
- 部署更加简单,内嵌Tomcat、Jetty等Web容器
- 监控更加容易,自带项目监控
1.3 Spring Boot的主要特性
- 约定优于配置
- 独立运行的Spring应用
- 内嵌Web容器
- 提供starter简化Maven配置
- 自动配置Spring
- 提供准生产的应用监控
- 无代码生成和XML配置
2. 第一个Spring Boot应用
2.1 Maven简介
Apache Maven是一个软件项目管理工具。基于项目对象模型(Project Object Model,POM)的理念,通过一段核心描述信息来管理项目构建、报告和文档信息。
主要完成两件工作:
- 统一开发规范与工具
- 统一管理Jar包
Maven统一管理项目开发所需要的Jar包,但是这些Jar包不再包含在项目内,而是存放于仓库中,仓库主要包含以下内容
- 中央仓库
中央仓库存放开发过程中所用到的所有Jar包,仓库地址:http://mvnrepository.com
- 本地仓库
本地仓库就是本地计算机中的仓库
Maven项目首先会在本地仓库中获取所需要的Jar包,当无法获取指定Jar包的时候,本地仓库会从中央仓库下载Jar包
2.2 Maven的pom.xml
所有的Maven项目都有一个pom.xml配置文件来管理项目的依赖以及项目的编译等功能,重点关注以下元素
- properties元素
在< properties> 之间可以定义变量,以便在中引用 - dependencies元素
里面包含多个元素 - dependency元素
元素内部通过、、确定唯一的依赖。
2.3 创建Maven web项目
使用IDEA,点击新建project,选择maven项目
然后更改pom.xml如下
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>maven_demo</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <name>maven_demo Maven Webapp</name> <!-- FIXME change it to the project's website --> <url>http://www.example.com</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies> <build> <finalName>maven_demo</finalName> <defaultGoal>compile</defaultGoal> <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) --> <plugins> <plugin> <artifactId>maven-clean-plugin</artifactId> <version>3.1.0</version> </plugin> <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging --> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>3.0.2</version> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> </plugin> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.22.1</version> </plugin> <plugin> <artifactId>maven-war-plugin</artifactId> <version>3.2.2</version> </plugin> <plugin> <artifactId>maven-install-plugin</artifactId> <version>2.5.2</version> </plugin> <plugin> <artifactId>maven-deploy-plugin</artifactId> <version>2.8.2</version> </plugin> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <port>8080</port> <uriEncoding>UTF-8</uriEncoding> </configuration> </plugin> </plugins> </pluginManagement> </build> </project> 复制代码
然后更改edit configurations,配置如下
然后运行服务,就可以看到结果
2.4 Maven构建第一个Spring Boot项目
在我们刚才Maven项目的基础上,进行修改就可以啦。
2.4.1 配置Spring Boot核心启动器
2.4.2 添加starter模块
2.4.3 修改后的pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>maven_demo</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <name>maven_demo Maven Webapp</name> <!-- FIXME change it to the project's website --> <url>http://www.example.com</url> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.4.5</version> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> <build> <finalName>maven_demo</finalName> <defaultGoal>compile</defaultGoal> <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) --> <plugins> <plugin> <artifactId>maven-clean-plugin</artifactId> <version>3.1.0</version> </plugin> <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging --> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>3.0.2</version> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> </plugin> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.22.1</version> </plugin> <plugin> <artifactId>maven-war-plugin</artifactId> <version>3.2.2</version> </plugin> <plugin> <artifactId>maven-install-plugin</artifactId> <version>2.5.2</version> </plugin> <plugin> <artifactId>maven-deploy-plugin</artifactId> <version>2.8.2</version> </plugin> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <port>8080</port> <uriEncoding>UTF-8</uriEncoding> </configuration> </plugin> </plugins> </pluginManagement> </build> </project> 复制代码
Maven –> install载入依赖,然后编写控制层以及启动类
package com.test; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class TestController { @RequestMapping("/hello") public String hello(){ return "您好,Spring Boot!"; } } 复制代码
package com.test; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Application { public static void main(String[] args){ SpringApplication.run(Application.class,args); } } 复制代码
启动服务,打开localhost:8080/hello就可以看到下图
关于IoC和AOP的内容拎出来单独写一篇