初学Spring boot (一) Hello,World!

news2024/11/16 3:42:57

SpringBoot简介

回顾什么是Spring?

Spring是一个开源框架,2003 年兴起的一个轻量级的Java 开发框架,作者:Rod Johnson 。

Spring是为了解决企业级应用开发的复杂性而创建的,简化开发。

Spring是如何简化Java开发的

为了降低Java开发的复杂性,Spring采用了以下4种关键策略:

  • 1、基于POJO的轻量级和最小侵入性编程,所有东西都是bean;
  • 2、通过IOC,依赖注入(DI)和面向接口实现松耦合;
  • 3、基于切面(AOP)和惯例进行声明式编程;
  • 4、通过切面和模版减少样式代码,RedisTemplate,xxxTemplate;

什么是SpringBoot

学过javaweb的同学就知道,开发一个web应用,从最初开始接触Servlet结合Tomcat, 跑出一个Hello Wolrld程序,是要经历特别多的步骤;后来就用了框架Struts,再后来是SpringMVC,到了现在的SpringBoot,过一两年又会有其他web框架出现;你们有经历过框架不断的演进,然后自己开发项目所有的技术也在不断的变化、改造吗?建议都可以去经历一遍;

言归正传,什么是SpringBoot呢,就是一个javaweb的开发框架,和SpringMVC类似,对比其他javaweb框架的好处,官方说是简化开发,约定大于配置, you can “just run”,能迅速的开发web应用,几行代码开发一个http接口。

所有的技术框架的发展似乎都遵循了一条主线规律:从一个复杂应用场景 衍生 一种规范框架,人们只需要进行各种配置而不需要自己去实现它,这时候强大的配置功能成了优点;发展到一定程度之后,人们根据实际生产应用情况,选取其中实用功能和设计精华,重构出一些轻量级的框架;之后为了提高开发效率,嫌弃原先的各类配置过于麻烦,于是开始提倡“约定大于配置”,进而衍生出一些一站式的解决方案。

是的这就是Java企业级应用->J2EE->spring->springboot的过程。

随着 Spring 不断的发展,涉及的领域越来越多,项目整合开发需要配合各种各样的文件,慢慢变得不那么易用简单,违背了最初的理念,甚至人称配置地狱。Spring Boot 正是在这样的一个背景下被抽象出来的开发框架,目的为了让大家更容易的使用 Spring 、更容易的集成各种常用的中间件、开源软件;

Spring Boot 基于 Spring 开发,Spirng Boot 本身并不提供 Spring 框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于 Spring 框架的应用程序。也就是说,它并不是用来替代 Spring 的解决方案,而是和 Spring 框架紧密结合用于提升 Spring 开发者体验的工具。Spring Boot 以约定大于配置的核心思想,默认帮我们进行了很多设置,多数 Spring Boot 应用只需要很少的 Spring 配置。同时它集成了大量常用的第三方库配置(例如 Redis、MongoDB、Jpa、RabbitMQ、Quartz 等等),Spring Boot 应用中这些第三方库几乎可以零配置的开箱即用。

简单来说就是SpringBoot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,spring boot整合了所有的框架 。

Spring Boot 出生名门,从一开始就站在一个比较高的起点,又经过这几年的发展,生态足够完善,Spring Boot 已经当之无愧成为 Java 领域最热门的技术。

Spring Boot的主要优点:

  • 为所有Spring开发者更快的入门
  • 开箱即用,提供各种默认配置来简化项目配置
  • 内嵌式容器简化Web项目
  • 没有冗余代码生成和XML配置的要求

真的很爽,我们快速去体验开发个接口的感觉吧!

Hello,World

准备工作

我们将学习如何快速的创建一个Spring Boot应用,并且实现一个简单的Http请求处理。通过这个例子对Spring Boot有一个初步的了解,并体验其结构简单、开发快速的特性。

我的环境准备:

  • java version “1.8.0_181”
  • Maven-3.6.1
  • SpringBoot 2.x 最新版

开发工具:

  • IDEA

创建基础项目说明

Spring官方提供了非常方便的工具让我们快速构建应用

Spring Initializr:https://start.spring.io/

项目创建方式一:使用Spring Initializr 的 Web页面创建项目

  • 1、打开 https://start.spring.io/
  • 2、填写项目信息
  • 3、点击”Generate Project“按钮生成项目;下载此项目
  • 4、解压项目包,并用IDEA以Maven项目导入,一路下一步即可,直到项目导入完毕。
  • 5、如果是第一次使用,可能速度会比较慢,包比较多、需要耐心等待一切就绪。

项目创建方式二:使用 IDEA 直接创建项目

  • 1、创建一个新项目
  • 2、选择spring initalizr , 可以看到默认就是去官网的快速构建工具那里实现
  • 3、填写项目信息
  • 4、选择初始化的组件(初学勾选 Web 即可)
  • 5、填写项目路径
  • 6、等待项目构建成功

项目结构分析:
通过上面步骤完成了基础项目的创建。就会自动生成以下文件。

  • 1、程序的主启动类
  • 2、一个 application.properties 配置文件
  • 3、一个 测试类
  • 4、一个 pom.xml

pom.xml 分析

打开pom.xml,看看Spring Boot项目的依赖:


<!-- 父依赖 -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.5.RELEASE</version>
    <relativePath/>
</parent>

<dependencies>
    <!-- web场景启动器 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- springboot单元测试 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <!-- 剔除依赖 -->
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>

<build>
    <plugins>
        <!-- 打包插件 -->
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

编写一个http接口

1、在主程序的同级目录下,新建一个controller包,一定要在同级目录下,否则识别不到

2、在包中新建一个HelloController类


@RestController
public class HelloController {

    @RequestMapping("/hello")
    public String hello() {
        return "Hello World";
    }
    
}

3、编写完毕后,从主程序启动项目,浏览器发起请求,看页面返回;控制台输出了 Tomcat 访问的端口号!

在这里插入图片描述

简单几步,就完成了一个web接口的开发,SpringBoot就是这么简单。所以我们常用它来建立我们的微服务项目!

将项目打成jar包,点击 maven的 package

在这里插入图片描述

如果遇到以上错误,可以配置打包时 跳过项目运行测试用例


<!--
    在工作中,很多情况下我们打包是不想执行测试用例的
    可能是测试用例不完事,或是测试用例会影响数据库数据
    跳过测试用例执
    -->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <!--跳过项目运行测试用例-->
        <skipTests>true</skipTests>
    </configuration>
</plugin>

如果打包成功,则会在target目录下生成一个 jar 包
在这里插入图片描述
打成了jar包后,就可以在任何地方运行了!OK

彩蛋
如何更改启动时显示的字符拼成的字母,SpringBoot呢?也就是 banner 图案;
只需一步:到项目下的 resources 目录下新建一个banner.txt 即可。
图案可以到:https://www.bootschool.net/ascii 这个网站生成,然后拷贝到文件中即可!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/712142.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

element 表格

实现效果&#xff1a; 需求&#xff1a; 1. 左侧新增分类功能添加数据到左侧分类表格中。 2. 分类表格可以编辑和删除。 3. 右侧添加标签功能&#xff0c;添加标签至所属分类中。 4.右侧表格显示分类与所挂在当前分类下的所有标签。 5. 右侧表格内删除按钮&#xff0c;删除…

C++之模板类指向子类对象(一百四十六)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

diy遥控飞机模型的基本要点-4

电调 电调&#xff08;Electronic Speed Controller&#xff0c;简称ESC&#xff09;是遥控飞机中的一种关键设备&#xff0c;用于控制电动马达的转速和方向。下面是关于电调的一些知识&#xff1a; 功能 速度调节&#xff1a;电调通过调整电流的大小和方向来控制电动马达的…

window系统安装node,配置环境变量npm指令

首先 你要在本地创建一个文件夹 来放node window我们直接访问node下载地址 根据自己的电脑配置 选择对应的版本 这里的话 我建议还是选择 .msi 文件 处理会方便一点 下砸好之后我们直接双击运行 然后 下一步 Next 然后 勾选下面的协议 然后 继续下一步 这个都没必要看 只能说…

Oracle-记OGG迁移项目问题与优化(5-6月)

背景: 5-6月使用oggexpdp将两套Oracle 11g从AIX7.1迁移到redhat7.9,数据量接近3T&#xff0c;本文主要记录ogg迁移过程中遇到的问题以及优化方法&#xff0c;希望对读者有所帮助 问题一:OGG数据一致性校验 使用OGG数据迁移&#xff0c;需要面对的一个大问题就是如何进行源端和目…

Java 实现关注微信公众号动态获取验证码

大家好&#xff0c;我是程序猿小张 前言 个人博客今天上线一个文章私密的功能&#xff0c;该功能需要通过关注公众号来获取验证码&#xff0c;通过正确的验证码才能来查阅文章&#xff0c;具体效果如下图。 我感觉还蛮有意思的就决定把这个写出来&#xff0c;供大家去使用&…

Web3.0数字货币有哪些?

Web3.0的到来为数字货币带来了全新的发展机遇&#xff0c;它不仅仅是加密货币的进化版&#xff0c;更是一种去中心化、可编程性和自治性的数字资产。 在这个新的数字经济时代&#xff0c;Web3.0数字货币成为了金融革命的核心。本文将介绍一些重要的Web3.0数字货币&#xff0c;…

基于SpringBoot+vue的新生宿舍管理系统设计与实

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

基于Servlet的CRM客户关系管理系统

1.需求分析 客户是公司最宝贵的资源&#xff0c;为了更好的发掘老客户的价值,并开发更多新客户,公司实施客户关系管理系统。系统的功能是:通过这个系统完成对员工基本信息、客户基本信息、交往信息、客户服务信息的充分共享和规范化管理;通过对销售机会、客户开发过程的追踪和…

服务器配置静态IP

服务器配置静态IP 一、前期准备二、配置静态IP 将服务器配置为使用静态IP地址。这将使服务器拥有一个永久的IP地址&#xff0c;而不会在每次启动时更改。为此&#xff0c;您需要编辑网络配置文件并将服务器的IP地址添加到其中。详细步骤如下&#xff1a; 一、前期准备 请在配置…

Docter容器

轻量&#xff0c;高效&#xff0c;敏捷 本质是进程&#xff0c;所以才轻量&#xff0c;namespace隔离资源&#xff0c;cgroups资源限制 namespace 运行容器&#xff0c;100个容器争夺资源&#xff0c; 给每个容器分配多少资源 审计&#xff1a;你利用多少资源&#xff1f;技…

免费的CRM软件都有哪些功能?

有哪些免费好用的CRM软件推荐&#xff1f;Zoho CRM是免费的CRM客户管理软件。虽然限制了部分功能&#xff0c;但是依然可以管理客户关系&#xff0c;提高销售效率&#xff0c;实现快速增长。 联系人管理&#xff1a; 创建和管理联系人&#xff0c;记录他们的基本信息、交易历…

阿里云短信平台收费标准价格表

阿里云短信服务平台&#xff0c;阿里云短信0.032元一条&#xff0c;阿里云短信&#xff1f;阿里云短信怎么收费&#xff1f;阿里云短信多少钱一条&#xff0c;阿里云短信0.032元一条。新用户购买阿里云短信套餐包6.9元200条起&#xff0c;费用0.032元/条&#xff0c;阿里云短信…

轻量级的CRM系统有哪些优势

市面上的CRM客户管理系统多种多样&#xff0c;但并不是所有的CRM系统都适合您的企业——有些CRM过于复杂和昂贵&#xff0c;初创或小型企业无法负担。那么&#xff0c;有哪些好用的轻量级在线CRM系统&#xff1f; Zoho Bigin是初创或小型企业设计的轻量级在线CRM系统&#xff…

联想小新电脑无法启动怎么办?

1&#xff0c;电脑启动不了 2&#xff0c;强制断电3次开机后&#xff0c;Win11进入高级启动模式 &#xff08;注意每次强制关机要按住15秒左右&#xff09; 3&#xff0c;选择疑难解答 4&#xff0c;选择高级选项 5&#xff0c;卸载更新 6&#xff0c;卸载最新的质量更新 7&am…

Spring Boot 中的 Spring Cloud Feign

Spring Boot 中的 Spring Cloud Feign Spring Boot 是一个非常流行的 Java Web 开发框架&#xff0c;它提供了很多工具和组件来简化 Web 应用程序的开发。其中&#xff0c;Spring Cloud Feign 是 Spring Boot 中的一个非常重要的组件&#xff0c;它可以帮助我们实现声明式的 R…

Git构建和Github的ssh配置

由于你的本地 Git 仓库和 GitHub 仓库之间的传输是通过SSH加密的&#xff0c;所以我们需要配置验证信息 ssh-keygen -t rsa -C "youremailexample.com" your_emailyouremail.com 改为你在 Github 上注册的邮箱&#xff0c;之后会要求确认路径和输入密码&#xff0c…

计算机网络(谢希仁版)基础期末复习

一、前言 该篇文章是对计算机网络&#xff08;谢希仁版&#xff09;常考的期末复习知识点进行的总结&#xff0c;可以供大家进行简单的复习&#xff0c;适用于网络工程、计算机网络类专业的同学进行复习使用。其他对计算机网络感兴趣的同学、相关专业人士也可进行阅读。 二、第…

arcpy调用系统自带工具箱、检测文件是否存在、获取要素文件的属性(名称类型)、列出数据函数的使用

前言 前言其实我也不知道说什么&#xff0c;以往说的都是&#xff1b;垃圾话&#xff0c;现在垃圾话也说不出了&#xff0c;但是这是必不可少的内容&#xff01; 一、调用系统工具箱 我在这里以裁剪工具为例&#xff0c;其他的工具类似。 那么我们怎么知道我想使用的工具在…

【如何用大语言模型快速深度学习系列】从n-gram到TFIDF

感谢上一期能够进入csdn“每日推荐看”&#xff0c;那必然带着热情写下第二期《从n-gram到TFIDF》&#xff0c;这里引入一本《Speach and Language Processing》第三版翻译版本&#xff08;语音与语言处理(SLP)&#xff09;&#xff0c;前半部分写的很好&#xff01;里面连编辑…