SpringBoot基础篇1(搭建环境+基础配置)

news2024/9/23 13:27:04

一、SpingBoot入门案例

SpringBoot是用来简化Spring应用的初始搭建以及开发过程
先快速搭建一个SpringBoot:
创建一个空project,再创建SpringBoot模块。
在这里插入图片描述
在这里插入图片描述
点击Create,出现以下页面配置成功
在这里插入图片描述
创建一个控制器测试一下:
在这里插入图片描述

@RestController
@RequestMapping("/books")
public class BookController {
    @GetMapping
    public String getById(){
        System.out.println("springboot is running...");
        return "springboot is running...";
    }
}

@RestController和@Controller的异同:
同:都是用来表示Spring某个类是否可以接收HTTP请求
异:@Controller:标识一个Spring类是SpringMVC controller处理器
@RestController:是@Controller和@ResponseBody的结合体
@Controller类中的方法可以直接通过返回String跳转到jsp、ftl、html等模版页面。在方法上加@ResponseBody注解,也可以返回实体对象。
@RestController类中的所有方法只能返回String、Object、Json等实体对象,不能跳转到模版页面。


扩展:
@RequestBody用于接收json数据,后期开发中,发送请求参数超过一个时,以json格式为主,@RequestBody应用较广
@RequestParam用于接收url地址传参或表单传参,发送非json格式数据
@PathVariable用于接收路径参数,使用{参数名称}描述路径参数。用于RESTful进行开发,当参数数量较少时,例如一个,可以采用@PathVariable接收请求路径变量,通常用于传递id值。

按上面配置在启动的时候会报一个错java: 无法访问org.springframework.web.bind.annotation.GetMapping。是jdk版本和springboot的版本不一致,降低springboot的版本或者提高jdk的版本即可。
最终修改后的版本:
在这里插入图片描述
直接运行下面的类,就启动了SpringBoot:
不需要Spring的配置文件,也不需要Spring的配置类,也不需要tomcat,web.xml也不用配置,直接运行!
在这里插入图片描述
启动成功:
在这里插入图片描述
仔细看一下控制台:
在这里插入图片描述
在浏览器中访问:
在这里插入图片描述
同时控制台打印 :
在这里插入图片描述

总结:
这两个文件直接构成了一个SpringBoot
在这里插入图片描述

SpringBoot简化操作体现在如下四个方面:

1.parent:用来减少配置的依赖冲突,同时简化了一些配置

使用parent可以帮助开发者进行版本的统一管理
parent定义出来以后,并不是直接使用的,仅仅给了开发者一个说明书,没有直接使用
进入到pom.xml中,进入pom的父依赖(不是知道能不能这么叫…)
在这里插入图片描述
进入父依赖:
在这里插入图片描述
再进入父的父。。。
在这里插入图片描述
可以看到定义了版本号,并且在依赖中引用了。因此在pom.xml中引用依赖的时候,版本号就创建好了。
在这里插入图片描述
定义了这么多的版本号是谁在用,是依赖在用。在pom.xml中引用依赖的时候,自动设置了版本。(因为继承)

2.start:简化配置,要用到parent继承过来的版本

start里又定义了若干坐标,一个start对应了一个要使用的技术。

3.引导类:启动,初始化了一个Spring容器

获取bean的四种方式:

通过bean的id获取;
通过bean的类型获取;
通过id和类型获取
通过接口类型来获取bean(这个接口只能有一个实现类)

Spring SpringMVC都需要IOC容器,对象都以bean的形式交给IOC容器进行管理。SpringBoot也需要Spring容器(SpringBoot只是加速Spring配置的,其实还是Spring容器)

接收一下返回值,可以看到是Spring容器:
可以得到bean,注意controller或者其他的class必须交给容器管理。

@SpringBootApplication
public class Springboot0101QuickstartApplication {

    public static void main(String[] args) {
        //SpringBoot的容器,归根结底,还是Spring的容器
        ConfigurableApplicationContext context = SpringApplication.run(Springboot0101QuickstartApplication.class, args);
        BookController bean = context.getBean(BookController.class);
        System.out.println("bean============>"+bean);
        User bean1 = context.getBean(User.class);
        System.out.println("user============>"+bean1);
    }
}

4.内嵌tomcat:

tomcat服务器运行是以对象的形式在Spring容器中运行的,并将对象交给Spring容器进行管理。

二、SpringBoot的基础配置

配置文件是resources下的application.properties。用key-value的格式书写。
加载value:先加载properties文件,通过key的方式获取${key}

# 配置端口号为80端口
server.port=80
# 设置启动的图标为关
# spring.main.banner-mode=off
spring.banner.image.location=banner.txt

# 配置日志的级别
logging.level.root=info

改个启动图标。。。
在这里插入图片描述

配置文件总共有3种格式,分别为:

properties格式、yml格式、yaml格式(推荐格式)

配置文件的加载优先级

properties(最高)>yml>yaml
不同配置文件中相同配置按照加载优先级相互覆盖,不同配置文件中不同配置全部保留
yaml是一种数据序列化的格式,如何获取yaml文件中的内容呢?

1.yaml读取单一数据

yaml文件中:

server:
  port: 80
  servlet:
    context-path: /test

baseDir: c:\windows
#使用${属性名}引用数据
tempDir: ${baseDir}\temp

#要使用转义字符的话用""包起来
tempDir1: "${baseDir}\temp\t1\t2\t3"

类中:使用@value注解,${}里写yaml文件中的配置名

//一级一级的往下排
    @Value("${server.port}")
    private String serverPort;

    @Value("${tempDir}")
    private String tempDir;

    @Value("${tempDir1}")
    private String tempDir1;
2.读取全部数据

用到自动装配:@Autowired

//使用自动装配将所有的数据封装到一个对象Environment中
    @Autowired
    private Environment env;

就可以得到属性值了:

env.getProperty("server.port")
3.读取对象数据

yaml中:

#创建类,用于封装下面的数据
#由spring帮我们去加载数到对象中,一定要告诉spring加载这组信息
#使用时从spring中直接获取信息使用
datasource:
  driver: com.mysql.jdbc.Driver
  url: jdbc:mysql://localhost/springboot_db
  username: root
  password: "0630"

将yaml中的数据封装成一个java对象:配置前缀,属性名也要一样。

/**
 * @author June
 * @version 1.0
 * @description: TODO
 * @date 2023/5/10 17:20
 * 要和配置的属性名一样
 * 1.定义数据模型封装yaml文件中对应的数据
 * 2.定义为spring管控的bean
 * 3.指定加载的数据
 * application.yaml中的配置也是包装成一个对象进行访问的
 */
@Component
@ConfigurationProperties(prefix = "datasource")
public class MyDataSource {
    private String driver;
    private String url;
    private String username;
    private String password;

    public String getDriver() {
        return driver;
    }

    public void setDriver(String driver) {
        this.driver = driver;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "MyDataSource{" +
                "driver='" + driver + '\'' +
                ", url='" + url + '\'' +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

最后通过自动装配获取到封装yaml的对象。

 @Autowired
	private MyDataSource myDataSource;

application.yaml中的默认配置也是包装成一个一个的java对象进行访问的。

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

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

相关文章

Centos8搭建SMB服务

这里以Centos8为例,搭建简易的SMB服务。虚拟机配置:内存8G、存储64G、CPU单核四线程、网络NAT模式跳过虚拟机与系统配置部分,不清楚虚拟机配置以及创建的请查阅其他文档此文章只用于练习用,商业和个人用可以见解Truenas系统 更新…

改进YOLOv5 | C3模块改动篇 | 轻量化设计 |骨干引入高效卷积运算 DSConv: Efficient Convolution Operator

论文地址:https://arxiv.org/pdf/1901.01928v1.pdf 引入了一种卷积层的变体,称为DSConv(分布偏移卷积),其可以容易地替换进标准神经网络体系结构并且实现较低的存储器使用和较高的计算速度。 DSConv将传统的卷积内核分解为两个组件:可变量化内核(VQK)和分布偏移。 通过…

C 高级 /Day 2

#include<stdio.h> int Max_arr(int (*arr)[5],int row,int hang) {int max0;//最大值int k1;//循环行for(int i0;i<hang;i){int k1;//循环列for(int j0;j<row;j){//控制行和列for(int m0;m<hang;m){for(int n0;n<row;n){//如果是第m行的其他的元素&#xf…

MySQL原理(一):逻辑存储结构

前言 从本文开始&#xff0c;我将分享一下近期学习 MySQL 的笔记&#xff0c;其中大部分来源于极客时间的《MySQL实战45讲》、小林coding、以及部分其他博客和书籍。 这次系列文章着重讲 MySQL 的原理部分&#xff0c;主要是用于面试&#xff0c;也就是我们常说的八股&#x…

华为OD机试 - 有效的括号(Java)

一、题目描述 给定一个只包括 ‘(’&#xff0c;‘)’&#xff0c;‘{’&#xff0c;‘}’&#xff0c;‘[’&#xff0c;‘]’ 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。…

力扣习题+——单链表

宝子&#xff0c;你不点个赞吗&#xff1f;不评个论吗&#xff1f;不收个藏吗&#xff1f; 最后的最后&#xff0c;关注我&#xff0c;关注我&#xff0c;关注我&#xff0c;你会看到更多有趣的博客哦&#xff01;&#xff01;&#xff01; 喵喵喵&#xff0c;你对我真的很重要…

Redis 学习笔记

一、redis中的常见数据结构 Redis共有5种常见数据结构&#xff0c;分别字符串&#xff08;STRING)、列表&#xff08;LIST&#xff09;、集合&#xff08;SET)、散列&#xff08;HASH&#xff09;、有序集合&#xff08;ZSET)。 二、redis中字符串(String)介绍 String 类型是…

[ 云计算 华为云 ] 华为云开天 aPaaS:构建高效的企业数字化平台(上)

文章目录 前言一、 什么是 aPaaS1.1 初识 aPaaS 二、华为云开天 aPaaS2.1 华为云服务类型与种类2.1.1 基础 aPaaS2.1.2 行业 aPaaS&#xff08;一&#xff09;工业 aPaaS&#xff08;二&#xff09;政务 aPaaS&#xff08;三&#xff09;电力 aPaaS&#xff08;四&#xff09;矿…

“深圳十大金口碑人物”优必选科技创始人兼CEO周剑获此殊荣

深圳晚报社联合深圳市诚商信用评级有限公司、深圳市诚信营商促进会和中国善网&#xff0c;共同举办了首届“金口碑”评选活动。活动涵盖多个领域&#xff0c;历经多个环节的评定和实地走访&#xff0c;最终有10名个人、20家企业和70家商户成功获得“金口碑人物”、“金口碑企业…

苹果13白屏无法正常开机怎么办?可以尝试这2种解决方法!

iPhone13莫名重启卡在白苹果&#xff0c;iPhone13开机却一直卡在开机画面&#xff0c;无法正常开机启动。 iPhone13出现以上问题&#xff0c;虽然都是处于苹果logo的状态&#xff0c;都可称为白苹果。 苹果13出现白屏、黑屏、白苹果等故障时&#xff0c;我们该怎么进行强制重启…

网络基础知识2—网络

文章目录 1.IP地址1.1概念1.2作用1.3组成1.4格式1.5举例1.6分类1.7特殊的IP 2.子网掩码2.1作用2.2是否是同一网段 3.Mac地址4.网络数据传输—一跳一跳的过程4.1网络节点4.2IP地址和Mac地址的区别 5.网络硬件设备及技术5.1集线器5.2交换机5.3主机5.4ARP缓存表&#xff1a;主机和…

玩机搞机----rom中build.prop文件的修改 优化 删除 开启等等

对于安卓机型系统中的build.prop文件是必不可少的&#xff0c;网络也很多这类的优化教程。但大多都是老机型的解释&#xff0c;今天这个帖子针对一些新版机型build.prop文件的一些操作实例来分析下。友情提示&#xff0c;修改这个文件有风险。严重会进不去系统。而且机型不同。…

Windows11关闭Edge/Chrome浏览器触摸板双指前进后退手势(防止误触切换页面)

编辑了好久的东西&#xff0c;就因为手势误触一下子切换页面了&#xff0c;难受啊&#xff01; Mac版本的设置参考这篇&#xff08;他这个是通过终端命令做的&#xff09;&#xff1a; Mac Chrome浏览器&#xff0c;关闭双指前进、后退手势 我现在身边没有Mac&#xff0c;不知道…

在线UI设计工具都有哪些?如何选择?

做UI设计不仅要阅读UI设计技巧文章&#xff0c;还要掌握好用的UI设计工具&#xff0c;增加UI设计的实践经验&#xff0c;从而熟能生巧&#xff0c;提高UI设计效率。 找到一个好的在线UI设计工具&#xff0c;比如鱼遇到水&#xff0c;就会开启高效的UI设计。因此&#xff0c;掌…

【ONE·C++ || set和map(二):AVL树和红黑树】

总言 主要介绍AVL树和红黑树的部分框架结构和特性 文章目录 总言1、AVL树1.1、基本概念介绍1.2、重要框架与特性实现1.2.1、如何搭建AVL树的结点 &#xff1a;AVLTreeNode&#xff0c;引入三叉链1.2.2、如何搭建AVL树1.2.3、AVL树插入讲解 1.3、AVL树插入1.3.1、step1&#xf…

超越ChatGPT?新发布:“讯飞星火认知大模”到底行不行?

国内又一巨头发布 大语言模型&#xff0c;是 PPT 融资还是真材实料 &#xff1f; 作为程序员&#xff0c;到底面对这一趋势&#xff0c;我们何去何从 &#xff1f; 目录 讯飞星火&#xff0c;5月6日如约而至 一、你真的了解科大讯飞吗&#xff1f; 二、讯飞星火大模型将超越…

C++ 面向对象特征4 多态(Polymorphism)

目录 1、对多态的理解 2、实现多态的例子 3、多态的意义 4、静态联编与动态联编 1、对多态的理解 同一对象可以有多重层级递进身份 在不同的场合中&#xff0c;被外界所关注的是不同的身份&#xff0c;但本质和应有的行为并不会因外界眼光而改变。 比如说我自己 kali-Myon…

Dev C++中出现 undefined reference to XXX 错误的解决方式

出现 undefined reference to XXX 错误的现象&#xff1a; 主函数中调用在其他文件中定义的函数&#xff0c;编译报错&#xff1a;未定义的引用xxx。 原理&#xff1a;编译器在生成可执行文件的过程包括预处理、编译、汇编、链接&#xff0c;这4个过程&#xff0c;这个问题一般…

【AI】YOLOv3原理详解

1、前言 YOLOv1~3作者是约瑟夫雷德蒙(Joseph Chet Redmon),他的网站:https://pjreddie.com/ YOLOv1网站:https://pjreddie.com/darknet/yolov1/ YOLOv2网站:https://pjreddie.com/darknet/yolov2/ YOLOv3网站:https://pjreddie.com/darknet/yolo/ YOLOv4作者是Alexeyab…

KingbaseES V8R6 集群运维案例--备库timeline not contain minimum recovery point故障

​ 案例现象&#xff1a; KingbaseES V8R6集群备库启动后&#xff0c;加入集群失败&#xff0c;sys_log日志信息提示&#xff0c;如下图所示&#xff1a; 适用版本&#xff1a;kingbaseES V8R6 一、问题分析 在timeline对应的history文件中会记录每次timeline切换时所对应的lsn…