从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的内容拎出来单独写一篇

目录
相关文章
|
1天前
|
负载均衡 监控 Java
深入理解Spring Boot与Spring Cloud的整合方式
深入理解Spring Boot与Spring Cloud的整合方式
|
1天前
|
安全 Java Apache
如何安装与使用Spring Boot 2.2.x、Spring Framework 5.2.x与Apache Shiro 1.7进行高效开发
在现代Java Web开发领域,Spring Boot以其简化配置、快速开发的特点备受青睐。结合Spring Framework的成熟与Apache Shiro的强大权限控制能力,我们可以轻松构建安全且高效的Web应用。本篇文章将指导你如何安装并使用Spring Boot 2.2.x、Spring Framework 5.2.x以及Apache Shiro 1.7来构建一个具备基础权限管理功能的项目。
31 0
|
4天前
|
监控 Java 数据库
Spring Boot与Spring Batch的深度集成
Spring Boot与Spring Batch的深度集成
|
4天前
|
安全 Java 数据安全/隐私保护
使用Spring Boot和Spring Security保护你的应用
使用Spring Boot和Spring Security保护你的应用
|
4天前
|
SQL Java 数据库
使用Spring Boot和Spring Data JPA进行数据库操作
使用Spring Boot和Spring Data JPA进行数据库操作
|
5天前
|
NoSQL 前端开发 Java
技术笔记:springboot分布式锁组件spring
技术笔记:springboot分布式锁组件spring
11 1
|
5天前
|
Java Linux 程序员
技术笔记:Spring生态研习【五】:Springboot中bean的条件注入
技术笔记:Spring生态研习【五】:Springboot中bean的条件注入
|
5天前
|
Java 测试技术 应用服务中间件
Spring 与 Spring Boot:深入解析
Spring 与 Spring Boot:深入解析
9 0
|
5天前
|
缓存 NoSQL Java
Spring Boot2 系列教程(二十九)Spring Boot 整合 Redis
Spring Boot2 系列教程(二十九)Spring Boot 整合 Redis
|
6天前
|
Java API 数据格式
Spring三兄弟:Spring、Spring Boot、Spring Cloud的100个常用注解大盘点
Spring三兄弟:Spring、Spring Boot、Spring Cloud的100个常用注解大盘点