【Spring Boot】Spring Boot项目的创建和文件配置

news2025/4/8 15:21:43

目录

一、为什么要学Spring Boot

1、Spring Boot的优点

 二、创建Spring Boot项目

1、创建项目之前的准备工作

2、创建Spring Boot项目

3、项目目录的介绍

4、安装Spring Boot快速添加依赖的插件 

5、在项目中写一个helloworld 

 三、Spring Boot的配置文件

1、配置文件的作用

2、properties格式的配置文件

2.1、基本语法格式

 2.2、读取配置项

3、yml格式的配置文件

 3.1、yml基本语法

3.2、使用yml配置对象

 4、配置集合


一、为什么要学Spring Boot

Spring的诞生是为了简化Java程序的开发,而Spring Boot的诞生是为了简化Spring程序开发的,他就是Spring框架的脚手架。为了快速开发Spring程序而开发的一个框架。

Spring和Spring Boot开发效率就像下面的图片

Spring

绿皮火车 的图像结果

Spring Boot

火车和高铁的图片 的图像结果

 火车让我们出行方便,但是高铁让我们的生活更便捷,这就像我们的Spring和Spring Boot。


1、Spring Boot的优点

  1. 起步依赖:常见项目的时候就可以方便的添加依赖,不再需要像Spring在添加依赖的时候,需要让添加的依赖之间版本相匹配。(开发前)
  2. 内置Tomcat容器,把外部项目可以像内部项目一样直接运行。不需要再打一个war包,将程序放到Tomcat的webapps目录中,再启动Tomcat。(开发中)
  3. 快速部署,使用jar包加上简单的命令就可以再服务器上直接运行,也就是服务器上只要装配了1.8及以上版本的JDK,就可以直接以jar包方式启动,使用Spring Boot内置的Tomacat运行。(开发后)
  4. 抛弃了XML的配置方式,Spring中使用XML的方式配置文件首先就需要我们将特定的代码先复制到文件中,然后根据自己的需要配置,比较繁琐。Spring Boot中的配置文件是空白的,你需要配置什么写什么即可。
  5. 提供了更多的监控框架,方便了监控系统运行。

 二、创建Spring Boot项目

1、创建项目之前的准备工作

还是之前说过的,如果你想使用的idea社区版,那么就需要你安装2021.3.x版本或者这份版本之前的版本,因为社区版新版本对我们安装的一些插件收费。

创建Spring Boot项目之前需要安装Spring Boot Helper插件

 这个插件安装完成之后,它的图标和名字就发生了改变,变成了下面的这个东西。


2、创建Spring Boot项目

 这一步就是我们上面说的起步依赖

 注意到这里并不是所有人的项目会创建成功,我们还需要检查一下自己的国内源是否配置正确。

检查和配置当前项目的国内源 

 设置往后新创建的项目的国内源

 具体的setting.xml文件的配置,可以看我的这篇博客【Spring】创建一个Spring项目与Bean对象的存储_奋斗べ青年.的博客-CSDN博客

这样选择了之后,才会继续加载我们的项目

 

 项目创建好了之后,一些文件我们是需要删除的,因为我们用不上

  到这里一个Spring Boot 项目就创建完成了。

3、项目目录的介绍

4、安装Spring Boot快速添加依赖的插件 

这里需要知道的是这个插件中只是提供了Spring Boot中最常用的jar包(依赖),不太常用到的这个里面是没有的,还是需要我们在maven仓库中找到,手动添加依赖。

使用这个插件,需要我们在pom.xml文件中单机鼠标右键

 然后就会弹出下面的框

5、在项目中写一个helloworld 

这里需要注意的是,创建类需要在demo包底下创建的,不能在Java包的其他包底下创建,在其他包底下创建的类,是不能别识别的。

  

当我们将创建的TestController类添加到example包下,这个时候重启,再次访问是访问不到的的。

 

 Spring Boot核心思想:约定大于配置。Spring Boot中有许多约定或规范,你必须遵循。这里需要遵循的约定就是,所有你要放在容器中的对象的类,都必须和启动类在同一个目录下或者是在启动类所在目录的子目录中。如果不放,就会扫描不到。


 三、Spring Boot的配置文件

1、配置文件的作用

Spring Boot项目中所有重要的数据都是在配置文件中配置的,比如

  1. 数据库的连接信息,包括用户名和密码的设置
  2. 项目的启动端口,
  3. 第三方系统的调用密钥等信息
  4. 用于发现和定位问题的普通日志和异常日志等。

配置文件的格式有两种propertiesyml(yaml) 。虽然有两种格式,但是配置文件的名字都需要是application,如果配置文件的名字是其他的,那么这个文件不会被识别,那么其中的配置信息也就并不会生效。

properties格式的配置文件可以和yml格式的配置文件共同存在于一个项目中,但是如果两个配置文件中出现了同样的配置信息,比如两个配置文件中都配置了"server.port",指定tomcat的端口号不同,那么这个时候就会以properties格式的配置文件中的配置为主,也就是说properties配置文件优先级高,但是两个配置文件都会被加载。只不过是优先级高的先加载。

一个项目中可以将两种格式的配置文件共存,但是实际使用中,我们通常只会采用一种格式的配置文件。这样可以更好的维护,管理。

2、properties格式的配置文件

2.1、基本语法格式

properties的语法是用键值对的形式来组织的,key与value之间是使用"="连接的,并不需要多余的空格和缩进。配置文件中使用"#"号来添加注释信息。如下面的代码

server.port=8888

✨这里需要注意的是,我们在properties格式的配置文件中写了注释信息,注释信息中存在中文,可能在下次打开这个项目的时候,注释信息中存在的中文会乱码,因为properties格式的配置文件中默认的字符集是ISO-8859-1.

 解决中文乱码问题可以在setting中设置来解决。但是当前已经写了的中文在设置好了之后,再次打开还是乱码,但是将字符集修改之后添加的中文,就不会在出现乱码的问题了。

这个操作只是修改当前项目的。

 我们需要将从今往后创建的所有新项目都改为UTF-8,点击进入之后,和上面的操作一样搜索encoding,然后将所有的字符集都改为UTF-8.

 ✨所有的配置文件中存在两类配置项:系统配置项和用户自定义配置项

  1. 系统配置项:例如配置端口号 server.port
  2. 用户自定义配置项:例如myMotherland = China 
#数据库的配置
Spring.datasource.url=jdbc:mysql://127.0.0.1:3306/库名
Spring.datasource.username=root
Spring.datasource.password=123456
Spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver


#用户自定义配置项
myMotherland = China

#用户自定义配置项
myMotherland = China

 2.2、读取配置项

在项目中,想要主动的读取配置文件中的内容,可以使用@Value注解来实现,@Value注解参数中使用"${}"的格式读取。

package com.example.demo;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@ResponseBody
public class TestController {
    @Value("${myMotherland}")//这里是通过依赖注入的方式将配置文件中的自定义信息注入到当前的属性中
    private String myMotherland;
    @RequestMapping("/sayHi")
    public String sayHi(){
        return "我的祖国是"+myMotherland;
    }

}

 properies配置文件结构清晰,没有层级、各种缩进和空格格式的控制,键和值的形式简单,这种格式很适合初学者。不容易出错。但是这种格式的写法比较臃肿。还有一个问题就是properies格式的配置文件对中文的支持不是很好。

 


3、yml格式的配置文件

yml是YAML的缩写(全称为Yet Another Markup Language)意思为另一种标记语言。他对中文的支持很好

  • yml 是⼀个可读性⾼,写法简单、易于理解,它的语法和 JSON 语⾔类似。
  • yml ⽀持更多的数据类型,它可以简单表达清单(数组)、散列表,标量等数据形态。它使⽤空⽩ 符号缩进和⼤量依赖外观的特⾊,特别适合⽤来表达或编辑数据结构、各种配置⽂件等。
  • yml ⽀持更多的编程语⾔,它不⽌是 Java 中可以使⽤在 Golang、PHP、Python、Ruby、 JavaScript、Perl 中。

 3.1、yml基本语法

yml是属性结构的配置文件,它的基础语法是"key:value",注意key和value之间使用因为冒号加空格的方式组成的,其中空格不能省略。下面我们来看一下设置端口号和数据库连接信息的代码

#设置端口号
server:
  port: 8081
#设置数据库连接
spring:
  datasource:
    url: jdbc:mysql://127.0.0.0:3306/dbname?characterEncoding=utf8
    username: root
    password: 123456

3.2、使用yml配置对象

我们使用yml还可以配置对象

#自定义对象
student:
  id: 1
  name: 李四
  age: 20

1️⃣可以使用@Value注解来获取对象中的属性的值。使用可以使用@Controller注解将UserController类的对象存储到容器中。在将这个类创建成对象时通过@Value注解,将配置文件中student对象的名字赋值给当前类的属性,然后调用初始化方法doPostConstruct,完成对象的初始化。

package com.example.demo;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import javax.annotation.PostConstruct;

@Controller
public class UserController {
    @Value("${student.name}")
    private String name;
    @PostConstruct
    public void doPostConstruct(){
        //初始化方法
        System.out.println("name  "+name);
    }
}

 2️⃣我们也可以使用@ConfigurationProperties注解来读取配置文件中的对象并且与五大类注解搭配使用,在User类中使用五大类注解中的一个的作用是保证@ConfigurationProperties注解能够执行,只有让User类和Spring Boot框架一起启动才能够将配置文件中的对象属性赋值给User类中的属性

package com.example.demo.model;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@ConfigurationProperties("student")
@Component
public class User {
    private int id;
    private String name;
    private int age;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

 这里将user对象打印出来

package com.example.demo;

import com.example.demo.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import javax.annotation.PostConstruct;

@Controller
public class UserController {
    @Autowired
    private User user;
    @PostConstruct
    public void doPostConstruct(){
        //初始化方法
        System.out.println(user.toString());
    }
}

 4、配置集合

配置文件也可以配置list集合,如下所示

#配置集合
dbtypes://key值
  name://集合名字
    //集合属性
    - mysql
    - sqlserver
    - db2

或者使用行内写法

dbtypes: {name: [mysql,sqlserver,db2]}

这里读取集合和对象一样,也是使用@ConfigurationProperties注解来读取,具体实现和读取对象一样,先创建一个list类,将集合中的属性设置成私有的,然后使用get和set方法,然后通过下面的程序将list对象赋值到当前类的属性上。

package com.example.demo;

import com.example.demo.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import javax.annotation.PostConstruct;

@Controller
public class UserController {
    @Autowired
    private List list;
    @PostConstruct
    public void doPostConstruct(){
        //初始化方法
        System.out.println(list.toString());
    }
}

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

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

相关文章

opencv基础48-绘制图像轮廓并切割示例-cv2.drawContours()

绘制图像轮廓:drawContours函数 在 OpenCV 中,可以使用函数 cv2.drawContours()绘制图像轮廓。该函数的语法格式是: imagecv2.drawContours( image, contours, contourIdx, color[, thickness[, lineType[, hierarchy[, maxLevel[, offset]]…

mousedown拖拽功能(vue3+ts)

因为项目有rem适配,使用第三方插件无法处理适配问题,所有只能自己写拖拽功能了 拖拽一般都会想到按下,移动,放开,但是本人亲测,就在div绑定一个按下事件就行了(在事件里面写另外两个事件&#x…

前端架构师的具体职责范围(合集)

前端架构师的具体职责范围1 职责: 1、前端技术选型、架构搭建、制定前端开发规范,并编制相关文档 2、负责搭建前端框架、通用组件方案制定、性能优化相关工作; 3、维护和升级本地开发环境,提高开发效率,提升开发质量; 4、推动…

【深度学习注意力机制系列】—— ECSKNet注意力机制(附pytorch实现)

SKNet(Selective Kernel Network)是一种用于图像分类和目标检测等任务的深度神经网络架构,其核心创新是引入了选择性的多尺度卷积核(Selective Kernel)以及一种新颖的注意力机制,从而在不增加网络复杂性的情…

2.安装Docker-ce

一、删除之前安装的docker(若之前未安装过,此步骤省略…) 进入centos根目录执行以下命令(\ 是linux系统种命令换行符,如果命令过长,可以用\来换行) yum remove docker \ docker-client \ docker-client-latest \ doc…

BL302嵌入式ARM控制器进行SQLite3数据库操作的实例演示

本文主要讲述了在钡铼技术BL302嵌入式arm控制器上运行 SQLite3 数据库的命令示例。SQLite3 是一个轻型的嵌入式数据库,不需要安装数据库服务器进程,占用资源低且处理速度快。 首先,需要将对应版本的 SQLite3 文件复制到设备的 /usr/ 目录下&…

MyCat管理及监控——zookeeper及MyCat-web安装

1.MyCat管理 2.MyCat-eye 3.zookeeper安装 第一步:解压 第二部: 切换目录,创建data文件夹 第三步:修改zookeeper配置文件 这样zookeeper安装及配置就完成了 4.MyCat-web安装 注意mycat-web要与zookeeper关联,…

单元测试到底是什么?应该怎么做?

一、什么是单元测试? 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。至于“单元”的大小或范围,并没有一个明确的标准,“单元”可以是一个函数、方法、类、功能模块或者子系统。单…

Kafka3.0.0版本——Broker(上下线)示例

目录 一、Broker(上下线)示例1.1、三台服务器信息1.2、先启动zookeeper集群,再启动kafka集群1.3、zookeeper客户端工具prettyZoo查看brokers中ids1.4、停止某一台kafka服务,再次查看brokers中ids1.5、重新启动停止的kafka服务&…

笔记——听听前辈们的教学评一体化

精选课程内容 强而有力的知识 做中学,用中学,创中学。 这个技术很难做 关于支架的新理解 有价值 有意义 和 趣味性 权衡,不能为了趣味性舍弃价值 举例说明文 被教成了文学作品 导致所教所学 悄然发生了偏移。 所以教学评如何一直&#xff…

使用Beautiful Soup等三种方式定制Jmeter测试脚本

目录 背景介绍 实现思路 把脚本数据读出,使用正则表达式(re库)匹配关键数据进行修改 把脚本数据读出,使用BeautifulSoup的xml解析功能解析后修改 通过Beautiful Soup Beautiful Soup 具体实现 使用string.Template字符替换…

Jupyter Notebook 遇上 NebulaGraph,可视化探索图数据库

在之前的《手把手教你用 NebulaGraph AI 全家桶跑图算法》中,除了介绍了 ngai 这个小工具之外,还提到了一件事有了 Jupyter Notebook 插件: https://github.com/wey-gu/ipython-ngql,可以更便捷地操作 NebulaGraph。 本文就手把手教你咋在 J…

BpBinder与PPBinder调用过程——Android开发Binder IPC通信技术

在Android系统中,进程间通信(IPC)是一个非常重要的话题。Android系统通过Binder IPC机制实现进程间通信,而Binder IPC通信技术则是Android系统中最为重要的进程间通信技术之一。本文将介绍Binder IPC通信技术的原理,并…

实测有效Window10系统解决文件名过长无法删除或移动问题

问题:window10家庭版,文件名字太长无法对其进行操作 如图 PS:什么注册表方法,压缩方法都没效果 解决: 打开 注册编辑器 进入路径 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem 修改 LongP…

Jenkins 修改默认管理员帐号

1、新增一个新的超级管理员用户,并验证能正常登录 2、进入 Jenkins 用户管理目录: /data/software/jenkins/users 3、修改超级管理文件夹的名称为其他名称,如:mv admin_*** ifadm_*** 4、重启Jenkins容器

snowboy+sherpa-onnx+Rasa+Coqui实现语音音箱【语音助手】

背景 本系列主要目标初步完成一款智能音箱的基础功能,包括语音唤醒、语音识别(语音转文字)、处理用户请求(比如查天气等,主要通过rasa自己定义意图实现)、语音合成(文字转语音)功能。 coqui主要在项目中完成接收rasa响应的内容&…

Postgresql源码(111)dms框架进程信号发送与处理流程

信号处理整体流程 信号从bgworker发出后,主进程将ParallelMessagePending置为true,下次CHECK_FOR_INTERRUPTS()时,会进入信号处理逻辑中:HandleParallelMessages。进入信号处理逻辑后,首先遍历所有现存的ParallelCont…

护网专题简单介绍

护网专题简单介绍 一、护网红蓝队介绍1.1、网络安全大事件1.2、护网行动由来1.3、护网行动中的角色二、红队介绍2.1、红队所需技能2.2、红队攻击流程 三、蓝队介绍3.1、蓝队所需技能3.2、蓝队防守四阶段3.3、蓝队前期准备 四、常见安全厂商介绍4.1、常见安全厂商 五、常见安全产…

Softing工业获得自动化产品安全开发流程认证

Softing工业获得了TV Sd颁发的IEC 62443-4-1产品安全开发流程认证。 (IEC 62443-4-1认证确保网络安全) 截至2023年6月,位于德国哈尔和纽伦堡的工厂以及罗马尼亚克卢日的Softing工业研发部门已获得IEC 62443-4-1:2018标准的认证。该认证流程由…

Ajax-概念、Http协议、Ajax请求及其常见问题

Ajax Ajax概念Ajax优缺点HTTP协议请求报文响应报文 Ajax案例准备工作express基本使用创建一个服务器 发送AJAX请求GET请求POST请求JSON响应 Ajax请求出现的问题IE缓存问题Ajax请求超时与网络异常处理Ajax手动取消请求Ajax重复发送请求问题 Ajax概念 AJAX 全称为Asynchronous J…