从Spring到SpringBoot

简介: 从Spring到SpringBoot

主要是一些概念


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)中,如下图所示


image.png


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的主要特性


  1. 约定优于配置
  2. 独立运行的Spring应用
  3. 内嵌Web容器
  4. 提供starter简化Maven配置
  5. 自动配置Spring
  6. 提供准生产的应用监控
  7. 无代码生成和XML配置


2. 第一个Spring Boot应用


2.1 Maven简介


Apache Maven是一个软件项目管理工具。基于项目对象模型(Project Object Model,POM)的理念,通过一段核心描述信息来管理项目构建、报告和文档信息。

主要完成两件工作:


  1. 统一开发规范与工具
  2. 统一管理Jar包

Maven统一管理项目开发所需要的Jar包,但是这些Jar包不再包含在项目内,而是存放于仓库中,仓库主要包含以下内容


  • 中央仓库
    中央仓库存放开发过程中所用到的所有Jar包,仓库地址:http://mvnrepository.com
  • 本地仓库
    本地仓库就是本地计算机中的仓库

Maven项目首先会在本地仓库中获取所需要的Jar包,当无法获取指定Jar包的时候,本地仓库会从中央仓库下载Jar包


2.2 Maven的pom.xml


所有的Maven项目都有一个pom.xml配置文件来管理项目的依赖以及项目的编译等功能,重点关注以下元素

  1. properties元素
    在< properties> 之间可以定义变量,以便在中引用
  2. dependencies元素
    里面包含多个元素
  3. 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,配置如下


image.png

然后运行服务,就可以看到结果

image.png


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就可以看到下图


image.png

关于IoC和AOP的内容拎出来单独写一篇

目录
相关文章
|
27天前
|
监控 Java 数据库连接
详解Spring Batch:在Spring Boot中实现高效批处理
详解Spring Batch:在Spring Boot中实现高效批处理
149 12
|
27天前
|
安全 Java 测试技术
详解Spring Profiles:在Spring Boot中实现环境配置管理
详解Spring Profiles:在Spring Boot中实现环境配置管理
76 10
|
24天前
|
负载均衡 Java 开发者
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
78 5
|
2月前
|
Java 测试技术 开发者
springboot学习四:Spring Boot profile多环境配置、devtools热部署
这篇文章主要介绍了如何在Spring Boot中进行多环境配置以及如何整合DevTools实现热部署,以提高开发效率。
104 2
|
2月前
|
前端开发 Java 程序员
springboot 学习十五:Spring Boot 优雅的集成Swagger2、Knife4j
这篇文章是关于如何在Spring Boot项目中集成Swagger2和Knife4j来生成和美化API接口文档的详细教程。
222 1
|
2月前
|
Java API Spring
springboot学习七:Spring Boot2.x 拦截器基础入门&实战项目场景实现
这篇文章是关于Spring Boot 2.x中拦截器的入门教程和实战项目场景实现的详细指南。
34 0
springboot学习七:Spring Boot2.x 拦截器基础入门&实战项目场景实现
|
2月前
|
Java API Spring
springboot学习六:Spring Boot2.x 过滤器基础入门&实战项目场景实现
这篇文章是关于Spring Boot 2.x中过滤器的基础知识和实战项目应用的教程。
40 0
springboot学习六:Spring Boot2.x 过滤器基础入门&实战项目场景实现
|
2月前
|
Java 测试技术 Spring
springboot学习三:Spring Boot 配置文件语法、静态工具类读取配置文件、静态工具类读取配置文件
这篇文章介绍了Spring Boot中配置文件的语法、如何读取配置文件以及如何通过静态工具类读取配置文件。
175 0
springboot学习三:Spring Boot 配置文件语法、静态工具类读取配置文件、静态工具类读取配置文件
|
2月前
|
SQL Java 数据库
Springboot+spring-boot-starter-data-jdbc实现数据库的操作
本文介绍了如何使用Spring Boot的spring-boot-starter-data-jdbc依赖来操作数据库,包括添加依赖、配置数据库信息和编写基于JdbcTemplate的数据访问代码。
221 2
|
2月前
|
XML Java 应用服务中间件
【Spring】运行Spring Boot项目,请求响应流程分析以及404和500报错
【Spring】运行Spring Boot项目,请求响应流程分析以及404和500报错
229 2