当前位置: 首页 > news >正文

SpringBoot新手入门完整教程和项目示例

文章目录

  • SpringBoot新手入门完整教程和项目示例
    • 1、SpringBoot简介
    • 2、Spring Boot的核心功能?(优点)
    • 3、SpringBoot与SpringMVC 的区别?
    • 4、构建SpringBoot项目
    • 4.1、在官网自动生成下载spring boot项目
    • 4.2、手动使用maven创建SpringBoot项目
      • 1、创建一个maven项目,最好不用骨架
      • 2、创建好项目后,在pom.xml中添加springboot相关依赖
      • 3、创建启动类,一定要和controller等包同级,即在cn.fpl包下
      • 4、创建controller输出内容
      • 5、项目结构如下
      • 6、运行启动类,运行结果如下,默认端口为8080

SpringBoot新手入门完整教程和项目示例

1、SpringBoot简介

Spring Boot是由Pivotal团队提供的全新框架,其中“Boot”的意思就是“引导”,Spring Boot 并不是对 Spring 功能上的增强,而是提供了一种快速开发 Spring应用的方式。其设计目的是用来简化Spring应用的创建、运行、调试、部署等。使用Spring Boot可以做到专注于Spring应用的开发,而无需过多关注XML的配置。Spring Boot使用“习惯优于配置”的理念,简单来说,它提供了一堆依赖打包,并已经按照使用习惯解决了依赖问题。使用Spring Boot可以不用或者只需要很少的Spring配置就可以让企业项目快速运行起来。

Spring Boot是开发者和Spring 本身框架的中间层,帮助开发者统筹管理应用的配置,提供基于实际开发中常见配置的默认处理(即习惯优于配置),简化应用的开发,简化应用的运维;总的来说,其目的Spring Boot就是为了对Java web 的开发进行“简化”和加“快”速度,简化开发过程中引入或启动相关Spring 功能的配置。这样带来的好处就是降低开发人员对于框架的关注点,可以把更多的精力放在自己的业务代码上。

同时随着微服务概念的推广和实践,Spring Boot的精简理念又使其成为Java微服务开发的不二之选,也可以说,Spring Boot其实就是为了微服务而生的Java web框架。

先如今,Spring Boot已经在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

2、Spring Boot的核心功能?(优点)

1、 可独立运行的Spring项目:Spring Boot可以以jar包的形式独立运行。

2、 内嵌的Servlet容器:Spring Boot可以选择内嵌Tomcat、Jetty或者Undertow,无须以war包形式部署项目。

3、 简化的Maven配置:Spring提供推荐的基础 POM 文件来简化Maven 配置。

4、 自动配置Spring:Spring Boot会根据项目依赖来自动配置Spring 框架,极大地减少项目要使用的配置。

5、 提供生产就绪型功能:提供可以直接在生产环境中使用的功能,如性能指标、应用信息和应用健康检查。

6、 无代码生成和xml配置:Spring Boot不生成代码。完全不需要任何xml配置即可实现Spring的所有配置。

我们的主要目标是:

  • 为所有Spring开发提供一个更快,更广泛的入门体验。
  • 立即开始斟酌,但随着需求开始偏离默认值,快速避开
  • 提供大型项目(如嵌入式服务器,安全性,指标,运行状况检查和外部配置)通用的一系列非功能性功能。
  • 绝对不会生成代码,并且不需要XML配置。

3、SpringBoot与SpringMVC 的区别?

说白了就是SpringBoot Web组件默认集成SpringMVC框架,SpringMVC3.0以后支持注解方式使用java代码启动SpringMVC。

4、构建SpringBoot项目

4.1、在官网自动生成下载spring boot项目

1、访问http://start.spring.io/
在这里插入图片描述
点击GENERATE后会自动下载刚才创建好的名为Springdemo的项目,然后使用idea打开即可!

4.2、手动使用maven创建SpringBoot项目

1、创建一个maven项目,最好不用骨架

在这里插入图片描述

2、创建好项目后,在pom.xml中添加springboot相关依赖

<?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><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.0.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>cn.fpl</groupId><artifactId>springboot_helloworld</artifactId><version>1.0-SNAPSHOT</version><properties><!-- 项目源码及编译输出的编码 --><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><!--jdk版本号--><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><!--springboot的启动器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies></project>

3、创建启动类,一定要和controller等包同级,即在cn.fpl包下

package cn.fpl;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class SpringbootHelloworldApp{public static void main(String[] args) {SpringApplication.run(SpringbootHelloworldApp.class, args);}
}

4、创建controller输出内容

package cn.fpl.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;import java.util.HashMap;
import java.util.Map;@Controller
public class HelloController {@RequestMapping("/")@ResponseBodypublic Map hello(){Map<String, Object> map = new HashMap<>();map.put("msg", "兄弟们,大家好!");return map;}
}

5、项目结构如下

在这里插入图片描述

6、运行启动类,运行结果如下,默认端口为8080

在这里插入图片描述

在这里插入图片描述

相关文章:

  • el-dialog嵌套使用,只显示遮罩层的问题
  • 【设计模式-3.3】结构型——享元模式
  • 面向企业的 ChatGPT 究极手册:第三章到第四章
  • WebGL中开发AR应用
  • mybatis----小细节
  • rust跟我学七:获取外网IP地址
  • 【话题】边缘计算的挑战和机遇
  • Windows 项目从0到1的部署
  • 软件工程:黑盒测试等价分类法相关知识和多实例分析
  • Unity | 渡鸦避难所-7 | 攻击碰撞检测
  • axios的原理及源码解析
  • 一篇综述洞悉医学大型语言模型的原理,应用和挑战
  • c语言:用一个宏,可以将一个整数的二进制位的奇数位和偶数位交换。
  • 李沐《动手学深度学习》线性神经网络 softmax回归
  • python/c++ Leetcode题解——118. 杨辉三角
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • 【Amaple教程】5. 插件
  • 【面试系列】之二:关于js原型
  • Angularjs之国际化
  • ES2017异步函数现已正式可用
  • ES6 ...操作符
  • JavaScript的使用你知道几种?(上)
  • JAVA多线程机制解析-volatilesynchronized
  • JS笔记四:作用域、变量(函数)提升
  • JS基础之数据类型、对象、原型、原型链、继承
  • js继承的实现方法
  • JS实现简单的MVC模式开发小游戏
  • JS专题之继承
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • React中的“虫洞”——Context
  • select2 取值 遍历 设置默认值
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 时间复杂度与空间复杂度分析
  • 探索 JS 中的模块化
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 我有几个粽子,和一个故事
  • 一份游戏开发学习路线
  • 再谈express与koa的对比
  • 数据可视化之下发图实践
  • ​iOS实时查看App运行日志
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • (4)STL算法之比较
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (day6) 319. 灯泡开关
  • (TOJ2804)Even? Odd?
  • (翻译)terry crowley: 写给程序员
  • (利用IDEA+Maven)定制属于自己的jar包
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (小白学Java)Java简介和基本配置
  • (转)scrum常见工具列表
  • .Net Redis的秒杀Dome和异步执行
  • .NET 中创建支持集合初始化器的类型
  • .Net面试题4