SpringBoot基础入门

news2024/9/23 23:32:22

简介

官网:https://spring.io/projects/spring-boot

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程。

SpringBoot不是Spring官方的框架模式,而是一个团队在Spring4.0版本上二次开发并开源公布出来的。简而言之,SpringBoot就是一个轻量级,简化配置和开发流程的web整合框架。

SpringBoot是Spring开发的脚手架。

创建一个springboot项目:方式1-1,一个项目下可以创建多个Module

创建项目

 空项目

输入项目名称

选择sdk等

配置maven

新建模块(这里演示只创建一个Module)

选择“Spring Initializr”,然后选择jdk版本,另外,默认是从https://start.spring.io拉取代码模板

Group和Package改为一样

选择starter(SpringBoot提供了许多Starter,也就是启动器,分别对应不同中的应用场景,只要在项目中引入这些starter,相应场景的依赖就会被导入)

web项目,选择"Spring Web"

如果要操作数据库,可以选择数据库依赖

模块名

下面四个可以删除

生成的项目

resources下:

  static:保存所有的静态资源,js css images;

  templates:保存所有的模板页面,可以使用模板引擎(freemarker、thymeleaf);

  application.properties:Spring Boot应用的配置文件,可以修改一些默认设置;

pom中父工程版本找不到???

我们先把父工程的版本换成2.4.5吧

说明:Spring Boot提供了一个名为spring-boot-starter-parent的工程,这个父工程的父工程(spring-boot-dependencies)里面已经对各种常用依赖的版本进行了管理

自动导入了很多依赖

编写一个控制器:

package com.qzcsbj.demo.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

/**
 * @公众号 : 全栈测试笔记
 * @博客 : www.cnblogs.com/uncleyong
 * @微信 : ren168632201
 * @描述 : <>
 */
@RestController
public class HelloController {
    @RequestMapping(value="hello", method = RequestMethod.GET)
    public String hello(){
        return "hello springboot";
    }
}

@RestController = @controller = @ResponseBody

运行启动类

下面日志中可以看到,端口是8080

请求:localhost:8080/hello

与之前springmvc相比,少了很多配置,用起来更方便。

返回json

添加依赖

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.18</version>
            <scope>provided</scope>
        </dependency>

实体类

package com.qzcsbj.demo.bean;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @公众号 : 全栈测试笔记
 * @博客 : www.cnblogs.com/uncleyong
 * @微信 : ren168632201
 * @描述 : <>
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private String name;
    private Integer age;
}

控制器

package com.qzcsbj.demo.controller;

import com.qzcsbj.demo.bean.User;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;

/**
 * @公众号 : 全栈测试笔记
 * @博客 : www.cnblogs.com/uncleyong
 * @微信 : ren168632201
 * @描述 : <>
 */
@RestController
public class HelloController {
    @RequestMapping(value="hello", method = RequestMethod.GET)
    public String hello(){
        return "hello springboot";
    }

    @RequestMapping("/users")
    public List<User> findUsers(){
        List<User> users = new ArrayList<>();
        users.add(new User("jack",18));
        users.add(new User("lucy",19));
        return users;
    }
}

请求:127.0.0.1:8080/users

创建一个springboot项目:方式1-2,可以直接创建项目和Module

删除:.mvn、.gitignore、mvnw、mvnw.cmd

pom中,java.version修改为1.8

<?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 https://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>3.0.2</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.qzcsbj.demo</groupId>
    <artifactId>springbootdemo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springbootdemo</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

选择jdk等

配置maven

说明:上面配置仅仅对本项目生效

idea每次新建项目都要重新配置maven的解决方案:https://www.cnblogs.com/uncleyong/p/16199194.html

创建一个springboot项目:方式2,在Spring Boot官方Initializer页面在线构建工程再导入到idea中

https://spring.io/projects/spring-boot

https://start.spring.io/

会自动下载生成的项目代码,然后导入idea。

【bak】

原文会持续更新,原文地址:https://www.cnblogs.com/uncleyong/p/17064293.html

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

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

相关文章

《深入浅出计算机组成原理》学习笔记 Day8

加法器1. 异或门与半加器2. 全加器3. 总结参考1. 异或门与半加器 异或门就是实现一个最简单的整数加法所需要使用的基本门电路。 当输入两位都是 11 的时候&#xff0c;还需要向更左侧的一位进行进位。这个就对应一个与门&#xff0c;也就是当加数和被加数都是 1 的时候&…

【数据结构之二叉树系列】二叉树的基本知识

目录前言一、树1、树的相关概念&#xff08;1&#xff09;结点&#xff08;2&#xff09;结点的度&#xff08;3&#xff09;叶结点&#xff08;4&#xff09;分支结点&#xff08;5&#xff09;父亲结点&#xff08;6&#xff09;子节点&#xff08;7&#xff09;树的度&#…

Java标准输入输出流(in/out)

文章目录前言标准输入流标准输出流前言 Java通过系统类System实现标准输入/输出的功能&#xff0c;在Java中输入输出数据一般&#xff08;图形化界面例外&#xff09;要用到标准输入输出流 System.in 标准输入&#xff1a;通常指从键盘输入数据System.out 标准输出&#xff1…

VueJs中如何使用Teleport组件

前言在DOM结构相对比较复杂,层级嵌套比较深的组件内,需要根据相对应的模块业务处理一些逻辑,该逻辑属于当前组件但是从整个页面应用的视图上看,它在DOM中应该被渲染在整个vue应用外部的其他地方,不能影响组件的结构比较常见的应用场景:就是全屏的模态框,控制元素的位置,也是可以…

分享124个ASP源码,总有一款适合您

ASP源码 分享124个ASP源码&#xff0c;总有一款适合您 下面是文件的名字&#xff0c;我放了一些图片&#xff0c;文章里不是所有的图主要是放不下...&#xff0c; 124个ASP源码下载链接&#xff1a;https://pan.baidu.com/s/1MLzeod5DblXbW3sZAeTsEQ?pwd9jfe ​​​​​​​…

连续系统的数字PID控制仿真-2

被控对象为三阶传递函数&#xff0c;采用Simulink模块与M函数相结合的形式&#xff0c;利用ODE45的方法求解连续对象方程&#xff0c;主程序由Simulink模块实现&#xff0c;控制器由M函数实现。输入指令信号为正弦信号0.05sin(2Tt)。采用PID方法设计控制器&#xff0c;其中kp …

casbin权限和配置文件的理解

官方文档 基础权限模型 下图为我基于个人理解画出来的(关于多租户RBAC模型可能有误) 发现一篇博客讲的还行Casbin权限模型&#xff0c;看他的权限系统设计模型分析部分 casbin配置文件内容的结构解释 注意matchers可以设置多个。我在知道这个之前一直疑惑为什么需要policy_…

【设计模式】我终于读懂了外观模式。。。

今天是正月初二&#xff0c;在这里给大家拜年啦&#xff01; 祝愿大家&#xff1a;兔年大吉大利&#xff0c;兔年顺顺利利&#xff0c;兔年快快乐乐&#xff0c;兔气十足十足&#xff0c;兔年富富满堂&#xff0c;兔年财源广进&#xff0c;兔年步步高升&#xff0c;兔年梦想成真…

【大数据hive】hive ddl语法使用详解

一、前言 DDL&#xff0c;也叫数据定义语言 (Data Definition Language, DDL)&#xff0c;是SQL语言集中对数据库内部的对象结构进行创建&#xff0c;删除&#xff0c;修改等的操作语言&#xff0c;这些数据库对象包括database、table等&#xff0c;使用过mysql的同学应该对此很…

抗积分饱和PID控制算法及仿真

积分饱和现象所谓积分饱和现象是指若系统存在一个方向的偏差&#xff0c;PID 控制器的输出由于积分作用的不断累加而加大&#xff0c;从而导致执行机构达到极限位置Xmax(例如阀门开度达到最大)&#xff0c;如图所示&#xff0c;若控制器输出u(k)继续增大&#xff0c;阀门开度不…

STL - 常用算法

常用遍历算法 for_each #include <algorithm> #include <functional> #include <iostream> #include <vector>using namespace std;//常用遍历算法 - for_each//普通函数 void print01(int val) {cout << val << " "; } //仿函数…

【每日一题Day95】LC1815得到新鲜甜甜圈的最多组数 | 状态压缩dp 记忆化搜索

得到新鲜甜甜圈的最多组数【LC1815】 有一个甜甜圈商店&#xff0c;每批次都烤 batchSize 个甜甜圈。这个店铺有个规则&#xff0c;就是在烤一批新的甜甜圈时&#xff0c;之前 所有 甜甜圈都必须已经全部销售完毕。给你一个整数 batchSize 和一个整数数组 groups &#xff0c;数…

LeetCode刷题模版:187-189、198-200

目录 简介187. 重复的DNA序列188. 买卖股票的最佳时机 IV【未理解】189. 轮转数组198. 打家劫舍199. 二叉树的右视图200. 岛屿数量结语简介 Hello! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~ ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简…

【论文翻译】Attention Is All You Need

【论文】Attention is All you Need (neurips.cc) 摘要 主要的序列转换模型是基于复杂的循环或卷积神经网络&#xff0c;其中包括一个编码器和一个解码器。表现最好的模型还通过注意机制连接编码器和解码器。我们提出了一个新的简单的网络架构&#xff0c;Transformer&#xf…

线程常用方法及常见状态

终止线程应该怎么终止一个线程呢&#xff1f;当线程完成任务时。通过使用变量来控制run方法退出的方式停止线程&#xff0c;即通知方式。这里详细介绍一下2的方式。在A线程依靠变量循环跑的过程ing&#xff0c;主线程通过修改A线程的变量&#xff0c;来控制线程终止。为A线程中…

SpringBoot配置文件详解

简介 SpringBoot全局配置文件默认为src/main/resources下的application.properties&#xff0c;后缀可以改为yml&#xff0c; 如果application.yml和application.properties两个配置文件都存在&#xff0c;那么&#xff0c;properties优先级更高 官网(Spring Boot 全部配置项)&…

01_kobject和ktype创建设备文件和设备目录

总结:创建设备文件的方法 设备文件属性指的是 /sys/yyy/xxx yyy:代表这个设备的目录 xxx:代表这个驱动设备的各种属性,我们可以直接操控属性来控制这个设备 比如之前常见的 echo 5 > /sys/led/brightness 直接操作这个属性来更改led的亮度 1 创建设备kobj对象,绑定目录 k…

C语言中不定参数 ... 的语法、函数封装

文章目录Intro语法测试依赖库新函数使用测试&#xff1a;遍历并打印不定参数中的值用两种方式封装函数&#xff1a;对多个int值求和总结Intro 有一天看C代码看到某个方法有这样的定义&#xff1a;在函数形参列表处&#xff0c;有...的写法&#xff0c;就像Java中的不定参数那样…

JDK8 新特性之Stream流方法详解

目录 一&#xff1a;集合处理数据的弊端 二&#xff1a;Stream流式思想概述 小结 &#xff1a; 三&#xff1a;获取Stream流的两种方式 方式1 : 根据Collection获取流 方式2 : Stream中的静态方法of获取流 小结 四&#xff1a;Stream常用方法和注意事项 Stream常用方法…

19. 函数基础知识详解

1. 什么是函数 函数是组织好的&#xff0c;可重复使用的&#xff0c;用来实现单一&#xff0c;或相关联功能的代码段。函数能提高应用的模块性&#xff0c;和代码的重复利用率。之前文章中我们已经使用过python提供的内建函数&#xff0c;比如print()。但你也可以自己创建函数…