SpringBoot_第二章(案例入门)_第二章快速入门案例-程序员宅基地

技术标签: spring boot  java  后端  框架_SpringBoot  

目录

1:创建SpringBoot项目 

1.1:idea创建项目

1.2:写一个简单的HelloController

1.3:启动SringBoot

2:项目文件解析

2.1:解析pom.xml来创建依赖管理

2.2:应用入口类解析

2.3:Spring Boot 的配置文件解析

3:SpringBoot热部署 


1:创建SpringBoot项目 

1.1:idea创建项目

对于SpringBoot概念和开发工具配置进行了准备,这一章开始搭建SpringBoot的项目入门,开发工具是idea.

然后创建项目名称为SpringBoot3,点击下一步

点击完成,之后再idea中就能看到新建的SpringBoot的项目了,稍等idea下载相关的jar,然后就能看到项目的完成目录结构,如果是第一次配置 Spring Boot 的话可能需要等待一会儿 IDE下载相应的 依赖包.

项目结构还是看上去挺清爽的,少了很多配置文件,我们来了解一下默认生成的有什么:

Springboot201Application: 一个带有 main() 方法的类,用于启动应用程序

Springboot201ApplicationTests:一个空的 Junit 测试了,它加载了一个使用 Spring Boot 字典配置功能的 Spring 应用程序上下文

application.properties:一个空的 properties 文件,可以根据需要添加配置属性

pom.xml: Maven 构建说明文件

1.2:写一个简单的HelloController

//@RestController注解
//该注解是 @Controller 和 @ResponseBody 注解的合体版
//(如果只单用@Controller,页面无返回值)
@RestController
public class HelloController {

    @GetMapping(value = "hello")
    public String hello(){
        return "hello springBoot 版本:2.7.14";
    }
}

1.3:启动SringBoot

//Component扫描 跟SpringBootApplication冲突
//@ComponentScan(value = "com.example.springboot2_01")

//包扫描 外部的包也能被扫描到
@SpringBootApplication(scanBasePackages = "com.example")
public class SpringBoot201Application {

    /**
     *
     * springBoot版本 v2.7.14
     * 需要jdk1.8以上
     * maven 3.5+
     * @param args
     */
    public static void main(String[] args) {
        ConfigurableApplicationContext run = SpringApplication.run(SpringBoot201Application.class, args);
        String[] beanDefinitionNames = run.getBeanDefinitionNames();
        for (String beanDefinitionName : beanDefinitionNames) {
            System.out.println("bean名字:"+beanDefinitionName);
        }
    }

}

在这个类中SpringBoot201Application,右键 run java application 然后就能看到控制台输出(

然后在浏览器访问地址如下,这就是一个最简单的SpringBoot入门案例。启动类启动

2:项目文件解析

2.1:解析pom.xml来创建依赖管理

<?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>
    <!--springBoot父类启动器-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.14</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <!--本项目信息-->
    <groupId>com.example</groupId>
    <artifactId>SpringBoot2_01</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>SpringBoot2_01</name>
    <description>SpringBoot2_01</description>
    <properties>
        <java.version>17</java.version>
    </properties>
    <dependencies>
        <!--springWeb依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!--  引入其他的springboot官网starter 自动导入相关依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>

        <!--热部署,改代码不需要重启-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <!-- lomBok注解依赖包-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <!-- 测试类依赖包-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!-- mysql依赖jar-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.33</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <!-- springboot打包插件 打成一个胖包  包含所有的东西 直接运行-->
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.project-lombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

我们可以看到一个比较陌生一些的标签 <parent> ,这个标签是在配置 Spring Boot 的父级依赖:

  <!--springBoot父类启动器-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.14</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

重点:有了这个,当前的项目才是 Spring Boot 项目,spring-boot-starter-parent 是一个特殊的 starter。这里就体现了SpringBoot的依赖管理,这个父启动器依赖中规定了各种启动器依赖jar包的版本,使用它之后,常用的包依赖就可以省去 version 标签。

2.2:应用入口类解析

Spring Boot 项目通常有一个名为 *Application 的入口类,入口类里有一个 main 方法, 这个 main 方法其实就是一个标准的 Java 应用的入口方法。

//Component扫描 跟SpringBootApplication冲突
//@ComponentScan(value = "com.example.springboot2_01")

//包扫描 外部的包也能被扫描到
@SpringBootApplication(scanBasePackages = "com.example")
public class SpringBoot201Application {

    /**
     *
     * springBoot版本 v2.7.14
     * 需要jdk1.8以上
     * maven 3.5+
     * @param args
     */
    public static void main(String[] args) {
        ConfigurableApplicationContext run = SpringApplication.run(SpringBoot201Application.class, args);
        String[] beanDefinitionNames = run.getBeanDefinitionNames();
        for (String beanDefinitionName : beanDefinitionNames) {
            System.out.println("bean名字:"+beanDefinitionName);
        }
    }

}

@ComponentScan(basePackages= {"com.example.*"}) 

ComponentScan用于加载指定的自定义包,默认加载当前包的子包

@SpringBootApplication 是 Spring Boot 的核心注解,它是一个组合注解,该注解组合了:@Configuration、@EnableAutoConfiguration、@ComponentScan; 若不是用 @SpringBootApplication 注解也可以使用这三个注解代替。

其中,@EnableAutoConfiguration 让 Spring Boot 根据类路径中的 jar 包依赖为当前项目进行自动配置,例如,添加了 spring-boot-starter-web 依赖,会自动添加 Tomcat 和 Spring MVC 的依赖,那么 Spring Boot 会对 Tomcat 和 Spring MVC 进行自动配置。
Spring Boot 还会自动扫描 @SpringBootApplication 所在类的同级包以及下级包里的 Bean ,所以入口类建议就配置在 grounpID + arctifactID 组合的包名下(这里为 com.thit.springboot 包)

2.3:Spring Boot 的配置文件解析

Spring Boot 使用一个全局的配置文件 application.properties 或 application.yml,放置在【src/main/resources】目录或者类路径的 /config 下。这两种配置文件实际上没什么大的区别,这是格式不一样,yml便于根据不同的开发测试生产环境,引入其对应环境的yml文件

Spring Boot 不仅支持常规的 properties 配置文件,还支持 yml 语言的配置文件。yml 是以数据为中心的语言,在配置数据的时候具有面向对象的特征。

Spring Boot 的全局配置文件的作用是对一些默认配置的配置值进行修改。

3:SpringBoot热部署 

在目前的 Spring Boot 项目中,当发生了任何修改之后我们都需要重新启动才能够正确的得到效果,这样会略显麻烦,Spring Boot 提供了热部署的方式,当发现任何类发生了改变,就会通过 JVM 类加载的方式,加载最新的类到虚拟机中,这样就不需要重新启动也能看到修改后的效果了。我们往 pom.xml 中添加一个依赖就可以了:

      <!--热部署,改代码不需要重启-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>

随意更改项目,不要重启,即可查看最新的效果

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/huyiju/article/details/83146331

智能推荐

16 款基于jQuery的图片缩放效果插件推荐_jquery 图片等比例缩放插件-程序员宅基地

文章浏览阅读1.7k次。jQuery很强大,你可以使用它来实现任何你想要实现的效果。今天为大家推荐一些图像缩放效果插件。1. Zoomer Gallery该插件可以将你的图片列表转换成漂亮的画廊,这个画廊带有像Flash一样缩放图片的效果。Zoomer Gallery 插件令你的界面看起来简单美观。它的大小为2KB,使用起来非常方便。2. Jcrop使用Jcrop可以轻松为_jquery 图片等比例缩放插件

VLAN虚拟局域网全网通练习_把某个vlan网段设置为全网通-程序员宅基地

文章浏览阅读259次,点赞4次,收藏7次。题目要求PC端ip地址全由DHCP协议自动生成,所以我们先处理LSW1和LSW2,再回头处理AR1。这里是基于端口的vlan划分 将vid配置映射给交换机的接口,从而实现vlan的划分。只需在AR1的 g0/0/0.1 和 g0/0/0.2两个虚拟子接口配置网关ip即可。由于整个题目都是在一个广播域内的,划分为两个vlan2,所以只需要划分两个子网即可。分别进入路由器的g0/0/0.1和g0/0/0.2接口执行DHCP下发。分别进入路由器的g0/0/0.1和g0/0/0.2接口设置以下命令。_把某个vlan网段设置为全网通

Sicily 相连的1 | 算法期末机考模拟题_sicily 答案-程序员宅基地

文章浏览阅读439次。本题来源于Sicily算法期末机考模拟题。_sicily 答案

Python3网络爬虫实战-32、数据存储:关系型数据库存储:MySQL_网络爬虫数据库信息表-程序员宅基地

文章浏览阅读239次。关系型数据库基于关系模型的数据库,而关系模型是通过二维表来保存的,所以它的存储方式就是行列组成的表,每一列是一个字段,每一行是一条记录。表可以看作是某个实体的集合,而实体之间存在联系,这就需要表与表之间的关联关系来体现,如主键外键的关联关系,多个表组成一个数据库,也就是关系型数据库。关系型数据库有多种,如 SQLite、MySQL、Oracle、SQL Server、DB2等等。在本节我们主要..._网络爬虫数据库信息表

Python 生成EXE文件_python转exe-程序员宅基地

文章浏览阅读1.8k次。使用PIP安装pyinstaller 1.下载PIP https://raw.githubusercontent.com/pypa/pip/master/contrib/get-pip.py2.python get-pip.py 安装pip 3. 执行 安装 pyinstaller pip install pyinstaller4.在CMD中运行pyinstaller,有显示信息表示安装_python转exe

离线安装vearch_vearch教程 python-程序员宅基地

文章浏览阅读1.2k次。文章目录1 安装1 离线安装go2 安装gcc 53 安装faiss3.1 利用Anaconda3直接安装Python环境3.2 编译源码(C++环境)3.2.1 步骤一:环境安装,安装gcc及g++3.2.2 安装Faiss依赖的数学库(openblas)3.2.3 安装Faiss依赖的数学库(lapack)3.2.4 编译安装Faiss3.2.5 测试Faiss2 编译vearch1 下载代码..._vearch教程 python

随便推点

linux gnome循环登录,解决:Ubuntu16.04循环登录-程序员宅基地

文章浏览阅读327次。Ubuntu16.04 已经出现N次循环登录的问题了,每次都重装,这次实在受不了了,撸起袖子就是干啊!循环登录的原因 有很多,我目前对它的发作原理并不是特别清楚,所以本次解决方案仅作参考。打印出根目录下.xsession_error,可以看到如下内容:openConnection: connect: 没有那个文件或目录cannot connect to brltty at :0upstart: g..._ubuntu upstart: gnome-session main process terminated with status 1

基于SpringBoot+SSM企业人事管理系统设计与实现(附源码资料)-程序员宅基地

文章浏览阅读195次。本系统为职工人事管理系统毕业设计作品,系统分为七大模块:职工管理,部门管理,岗位管理,招聘管理,奖惩管理,薪资管理,培训管理系统默认有两个个角色:管理员,普通用户管理员(admin/admin123):可以操作所有功能、增加用户普通用户(test/test):只可查看记录、无法修改。

兔子--eclipse设置编码格式_eclipse修改编码-程序员宅基地

文章浏览阅读821次。设置编码格式a:设置eclipse的默认编码格式:window->preferences->Workspace->Text File Encodingb:设置单个项目的编码格式::右键项目——Properties——Resource——Text file encoding_eclipse修改编码

DOM事件类型详解-程序员宅基地

文章浏览阅读921次。一、表单事件:input事件当<input>、<textarea>的值发生变化时触发。此外,打开contenteditable属性的元素,只要值发生变化,也会触发input事件。input事件的一个特点,就是会连续触发,比如用户每次按下一次按键,就会触发一次input事件。select事件当在<input>、<textarea>中选中文本时触发。Change事件当<input>、<select>、<textarea>的_dom事件

按下亮 松开灭 c语言程序,单片机用c语言,按钮控制一个LED灯,要求按下松开,LED亮,按下松开,LED暗!循环...-程序员宅基地

文章浏览阅读2.6k次。1、首先打开桌面上的keil软件,在进行对51单片机进行编程时最常用的就是keil软件。2、编写相应的代码:#include //定义单片机的头文件sbit led=P2^0; //定义单片机的管脚,void main(void) //主函数{ while(1) //无限循环 {led=0x1f; ..._单键控制led亮灭c语言

lazyload.css,图片加载优化及图片lazyload自适应 - 轩枫阁-程序员宅基地

文章浏览阅读575次。前言本文介绍针对轩枫阁V3主题开发过程中,遇到的图片问题及加载优化。图片居中裁剪本站的每一篇文章,都会配一张570×200的特色图像,使文章不那么单调。然而移动端移动端首页图片为60×60的正方形配图,这里有两种解决方案。设置缩略图大小,在wp管理端-设置-多媒体,设置缩略图尺寸为1:1结合CSS3的background-size,将配图作为背景图,并显示中间的正方形区域即可方法一可以安装插件,将..._backgroundimage css lazyload

推荐文章

热门文章

相关标签