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

智能推荐

最简单的方法实现windows下装windows+Linux双系统_windows装linux双系统-程序员宅基地

文章浏览阅读4.2k次。<!--@page {margin:2cm}p {margin-bottom:0.21cm; direction:ltr; color:#000000; text-align:justify; widows:0; orphans:0}p.western {font-family:"Times New Roman",serif; font-size:1

waves2Foam系列:1.安装-程序员宅基地

文章浏览阅读3.3k次,点赞3次,收藏6次。waves2Foam 的安装waves2Foam的编译不算很难,其中可能会遇见一些错误。但如果仔细观察输出的log的话,是比较容易发现错误的。本文使用Ubuntu 18.04 OpenFOAM 版本为3.0.1以及1912其中3.0.1的安装采用的是源代码本地编译,而1912是通过预编译deb包直接安装的。本文不讲述OpenFOAM安装的细节。安装waves2Foam首先是下载依赖:$ sudo apt install libgsl-dev gfortran subversion git_waves2foam

小功能:java导出excel,并与附件打包zip,excel中每条记录用超链接关联附件目录_excel java 打包-程序员宅基地

文章浏览阅读2.7k次,点赞3次,收藏16次。java导出excel,并与附件打包zip,excel中每条记录用超链接关联附件目录。_excel java 打包

使用Newtonsoft.Json 解决Json日期格式问题_mvcnewtonsoftjsonoptions 日期格式配置-程序员宅基地

文章浏览阅读5.7k次。介绍Asp.Net MVC默认是使用JavaScriptSerializer做Json序列化的,不好用。而且JavaScriptSerializer无法处理循环引用,对日期的格式化不友好。例如对当前日期序列化后的效果是这样的:【CreateTime: "/Date(1521983727837)/"】 这样的日期我们很难看懂而且JavaScriptSerializer对一个对象的序列化,序列化后的j..._mvcnewtonsoftjsonoptions 日期格式配置

[c++] 基类与派生类的构造与析构顺序-程序员宅基地

文章浏览阅读514次。  昨天做了网易的实习生笔试(一首凉凉送给自己),其中有道问答题是这样的 1 #include<iostream> 2 using namespace std; 3 class A 4 { 5 public: 6 A(){cout<<"A"<<endl;} 7 ~A(){cout<<"~A"&..._输出基类与派生类的构造和析构顺序

CountdownEvent-程序员宅基地

文章浏览阅读131次。 CountdownEvent lets you wait on more than one thread. The class is new to Framework 4.0 and has an efficient, fully managed implementation. To use the class, instantiate it with the number of threads..._using (var countdown = new countdownevent(

随便推点

Android Studio 实现地图定位(移动开发技术作业)_android stdio 定位波罗地海-程序员宅基地

文章浏览阅读1w次,点赞14次,收藏141次。一、项目要求1.根据百度地图提供的开发者文档,创建项目实现地图。2.可以提供地图显示,定位具体位置的功能。二、项目功能展示三、项目具体实现方法1.创建项目及Android studio基础配置在android studio 中创建一个新的空白项目打开浏览器搜索百度地图进入开放平台,然后点开开发文档选择地图SDK在文档底部根据提示完成前两个步骤,如果已有百度账号可以跳过注册直接申请称为百度地图开发者完成前两步的注册,申请开发者之后选择获取服务密钥(如果之前之前做过相关开发项目已经成为百度地_android stdio 定位波罗地海

微信消息推送协议简单分析_微信的消息通知是长链接吗-程序员宅基地

文章浏览阅读8.9k次。【结论】1) Android微信客户端和微信服务器A的(443端口)维持一个TCP长连接;定时向该服务器发送心跳;2) 有新消息时,微信服务器A通知Android微信客户端;后者和微信服务器B建立新的TCP短连接,并获得数据;3) 心跳间隔比较长,约300秒左右; 【协议分析】 分析涉及到两个微信服务器:服务器一:183.61.49.148 Andro_微信的消息通知是长链接吗

使用Mock框架JMockit进行单元测试-程序员宅基地

文章浏览阅读4.2k次,点赞2次,收藏26次。关于单元测试,我们先上一段代码,如下示例:public String sayHello() { Locale locale = Locale.getDefault(); if (locale.equals(Locale.CHINA)) { // 在中国,就说中文 return "你好,世界!"; } else { // 在其它国家,就说英文 return "H...

解密:古人八拜之交指的是哪八拜?_举杯对饮,八拜之交代表故事是什么生肖故事-程序员宅基地

文章浏览阅读3.7k次。_举杯对饮,八拜之交代表故事是什么生肖故事

CTF 学习笔记_ctf笔记-程序员宅基地

文章浏览阅读4.3k次,点赞7次,收藏60次。CTF起源于1996年DEFCON全球黑客大会,以替代之前黑客们通过互相发起真实攻击进行技术比拼的方式。WordPress是利用PHP开发的博客平台,用户可以在支持PHP和MySQL数据库的服务上架设属于自己的网站。也可以把WordPress当做一个内容管理系统(CMS)来使用。WordPress是一款个人博客系统,并逐步演化成一款内容管理系统软件,它是使用PHP语言和MySQL数据库开发的,用户可以在支持PHP和MySQL数据库的服务器上使用自己的博客。_ctf笔记

python+OpenCV笔记(二十七):反投影图像-程序员宅基地

本文介绍了Python和OpenCV中的反投影图像的概念、工作原理和代码编写。同时提到了直方图和直方图均衡化的相关知识。

推荐文章

热门文章

相关标签