Spring Boot -01- 快速入门篇(详解图文教程)下

简介: Spring Boot -01- 快速入门篇(详解图文教程)

第二步:HelloController


在 【main/java/com.xpwi.springboot】包下新建一个【HelloController】:


9ade21eae6a78e53e31afd94ff00a3f0_20181118101115334.png


package com.xpwi.springboot;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * 测试控制器
 *
 * @author: @肖朋伟CSDN
 * @create: 2018-11-18
 */
@RestController
public class HelloController {
    @RequestMapping("/hello")
    public String hello() {
        return "Hello Spring Boot!";
    }
}


第三步:利用 IDEA 启动 Spring Boot


(1)我们回到 SpringbootApplication 这个类中,然后右键点击运行:


4fa42fc0fb39f0b5d3c2ff42d13ede6f_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwMTQ3ODYz,size_16,color_FFFFFF,t_70.png


(2)会提示 Maven 导包,点击 import

cb4fa0b49bc55e319c88b559cb129c71_20181118101418750.png


(3)注意:我们之所以在上面的项目中没有手动的去配置 Tomcat 服务器,是因为 Spring Boot 内置了 Tomcat

等待一会儿就会看到下方的成功运行的提示信息:


3e8bdf63c2ba376e4eccd392b92ab3c8_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwMTQ3ODYz,size_16,color_FFFFFF,t_70.png


(4)此时,可以看到我们的 Tomcat 运行在 8080 端口,我们来访问下面地址试一下:


http://localhost:8080/hello


63a9032739c9e3094402e7459716e111_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwMTQ3ODYz,size_16,color_FFFFFF,t_70.png


Spring Boot 项目文件介绍


一、解析 pom.xml 文件:


(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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.xpwi</groupId>
    <artifactId>springboot</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>
    <name>springboot</name>
    <description>Demo project for Spring Boot</description>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.0.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <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>

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


<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.0.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

有了这个,当前的项目才是 Spring Boot 项目,spring-boot-starter-parent 是一个特殊的 starter

,它用来提供相关的 Maven 默认依赖,使用它之后,常用的包依赖就可以省去 version 标签。


关于具体 Spring Boot 提供了哪些 jar 包的依赖,我们可以查看本地 Maven

仓库下:\repository\org\springframework\boot\spring-boot-dependencies\2.1.0.RELEASE\spring-boot-dependencies-2.1.0.RELEASE.pom

文件来查看,挺长的…


二、应用入口类 SpringbootApplication.java


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

Javay 应用的入口方法。


@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.xpwi.springboot 包)


三、Spring Boot 的配置文件:


Spring Boot 使用一个全局的配置文件 application.properties 或

application.yml,放置在【src/main/resources】目录或者类路径的 /config 下。


Spring Boot 不仅支持常规的 properties 配置文件,还支持 yaml 语言的配置文件。yaml

是以数据为中心的语言,在配置数据的时候具有面向对象的特征。


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


修改 properties 配置文件实例:


(1)打开 resources 下的 application.properties


94f40efb57ba3490b98041a460e85435_20181118105134569.png


(2)在这里我们可以设置访问的端口,将 Tomcat 默认端口设置为 8080 (默认的不修改) ,并将默认的访问路径从 “/” 修改为 “/cn”

时,再访问 http://localhost:8080/ 是什么都没有的,此时要访问 hello 是要使用

http://localhost:8080/cn/hello


ccf02d4f782850616fc45612fa66aa7c_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwMTQ3ODYz,size_16,color_FFFFFF,t_70.png


注意:如果是 yml 需要在 “:” 后加一个空格,幸好 IDEA 很好地支持了 yml 文件的格式有良好的代码提示;

我们可以自己配置多个属性


(3) 使用 yml 文件作为配置文件 ,我们直接把 .properties 后缀的文件删掉,使用 .yml 文件来进行简单的配置


299d13c0b46276b39a730cb9996cbd17_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwMTQ3ODYz,size_16,color_FFFFFF,t_70.png


(4)在然后使用在我们的 HelloController.java 类中使用 @Value 来获取配置属性,代码(请看注释):


package com.xpwi.springboot;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * 测试控制器
 *
 * @author: @肖朋伟CSDN
 * @create: 2018-11-18
 */
@RestController
public class HelloController {
    // 获取.yml 文件中值
    @Value("${name}")
    private String name;
    // 获取 age
    @Value("${csdnUrl}")
    private String csdnUrl;
    //路径映射,对应浏览器访问的地址,访问该路径则执行下面函数
    @RequestMapping("/hello")
    public String hello() {
        return name + " CSDN 博客:"+ csdnUrl;
    }
}

(5)重启 Spring Boot ,输入地址:http://localhost:8080/hello  能看到正确的结果:


0c468964f7b9682b832be00a584619ce_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwMTQ3ODYz,size_16,color_FFFFFF,t_70.png


【注意】:此时如果你第一次使用 idea 出现中文乱码,解决办法:



faa5222028718238ee11553d5f121f23_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwMTQ3ODYz,size_16,color_FFFFFF,t_70.png

(6)【注意】: 我们并没有在 yml 文件中注明属性的类型,而是在使用的时候定义的。你也可以在配置文件中使用当前配置:


b488fe17be992e566674ba9b70dfd3d5_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwMTQ3ODYz,size_16,color_FFFFFF,t_70.png


(7)任然可以得到正确结果:


c22d7bcc47b467adacb08c38ec7db240_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwMTQ3ODYz,size_16,color_FFFFFF,t_70.png


(8)【问题】: 这样写配置文件繁琐而且可能会造成类的臃肿,因为有许许多多的 @Value 注解。


可以,封装配置信息


封装配置信息使用方法:

(1)application.yml 文件内容如下:


cd07043827543c49828ef46d59ee5721_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwMTQ3ODYz,size_16,color_FFFFFF,t_70.png

(2)新建 author.java 和 HelloController.java 同级,内容如下:


package com.xpwi.springboot;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "author")
public class author {
    private  String name;
    private  String csdnUrl;
    public String getCsdnUrl() {
        return csdnUrl;
    }
    public void setCsdnUrl(String csdnUrl) {
        this.csdnUrl = csdnUrl;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

(3)此时可能会报错,如果报错,打开 pom.xml 文件,添加内容(注意位置):


<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

7285a889c443a49e8dc895e3b6e6f9b4_20181118121422492.png


(4)重新编写 HelloController 类,内容如下:


package com.xpwi.springboot;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * 测试控制器
 *
 * @author: @肖朋伟CSDN
 * @create: 2018-11-18
 */
@RestController
public class HelloController {
    // 获取.yml 文件中值
    //@Value("${name}")
    //private String name;
    // 获取 age
    //@Value("${csdnUrl}")
    //private String csdnUrl;
    @Autowired
    private author author;
    //路径映射,对应浏览器访问的地址,访问该路径则执行下面函数
    @RequestMapping("/hello")
    public String hello() {
        return "名字:" + author.getName() + " 地址:" + author.getCsdnUrl();
    }
}

(5)重启 Spring Boot,访问浏览器:


http://localhost:8080/hello

146330553b5cf5216adaa47ed369c99e_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwMTQ3ODYz,size_16,color_FFFFFF,t_70.png


【提示】:我们可以把配置信息封装成一个类,首先在我们的 name 和 age 前加一个 student 前缀,然后新建一个

StudentProperties 的类用来封装这些信息,并用上两个注解:


  • @Component:表明当前类是一个 Java Bean
  • @ConfigurationProperties(prefix = “author”):表示获取前缀为 author 的配置信息


转载请注明出处:肖朋伟:https://blog.csdn.net/qq_40147863/article/details/84194493


更多文章链接:



相关文章
|
4月前
|
前端开发 Java 数据安全/隐私保护
用户登录前后端开发(一个简单完整的小项目)——SpringBoot与session验证(带前后端源码)全方位全流程超详细教程
文章通过一个简单的SpringBoot项目,详细介绍了前后端如何实现用户登录功能,包括前端登录页面的创建、后端登录逻辑的处理、使用session验证用户身份以及获取已登录用户信息的方法。
627 2
用户登录前后端开发(一个简单完整的小项目)——SpringBoot与session验证(带前后端源码)全方位全流程超详细教程
|
4月前
|
Cloud Native Java C++
Springboot3新特性:开发第一个 GraalVM 本机应用程序(完整教程)
文章介绍如何在Spring Boot 3中利用GraalVM将Java应用程序编译成独立的本机二进制文件,从而提高启动速度、减少内存占用,并实现不依赖JVM运行。
444 1
Springboot3新特性:开发第一个 GraalVM 本机应用程序(完整教程)
|
4月前
|
Java API Apache
Springboot+shiro,完整教程,带你学会shiro
这篇文章提供了一个完整的Apache Shiro与Spring Boot结合使用的教程,包括Shiro的配置、使用以及在非Web和Web环境中进行身份验证和授权的示例。
204 2
Springboot+shiro,完整教程,带你学会shiro
|
4月前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
918 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
4月前
|
缓存 NoSQL Java
springboot的缓存和redis缓存,入门级别教程
本文介绍了Spring Boot中的缓存机制,包括使用默认的JVM缓存和集成Redis缓存,以及如何配置和使用缓存来提高应用程序性能。
162 1
springboot的缓存和redis缓存,入门级别教程
|
4月前
|
JSON Java Maven
实现Java Spring Boot FCM推送教程
本指南介绍了如何在Spring Boot项目中集成Firebase云消息服务(FCM),包括创建项目、添加依赖、配置服务账户密钥、编写推送服务类以及发送消息等步骤,帮助开发者快速实现推送通知功能。
203 2
|
5月前
|
Java 关系型数据库 MySQL
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
本文介绍了一款基于Spring Boot和JSP技术的房屋租赁系统,旨在通过自动化和信息化手段提升房屋管理效率,优化租户体验。系统采用JDK 1.8、Maven 3.6、MySQL 8.0、JSP、Layui和Spring Boot 2.0等技术栈,实现了高效的房源管理和便捷的租户服务。通过该系统,房东可以轻松管理房源,租户可以快速找到合适的住所,双方都能享受数字化带来的便利。未来,系统将持续优化升级,提供更多完善的服务。
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
|
5月前
|
JavaScript Java 关系型数据库
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
本文介绍了一个基于Spring Boot和Vue.js实现的在线考试系统。随着在线教育的发展,在线考试系统的重要性日益凸显。该系统不仅能提高教学效率,减轻教师负担,还为学生提供了灵活便捷的考试方式。技术栈包括Spring Boot、Vue.js、Element-UI等,支持多种角色登录,具备考试管理、题库管理、成绩查询等功能。系统采用前后端分离架构,具备高性能和扩展性,未来可进一步优化并引入AI技术提升智能化水平。
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
|
5月前
|
XML JavaScript Java
Spring Retry 教程
Spring Retry 是 Spring 提供的用于处理方法重试的库,通过 AOP 提供声明式重试机制,不侵入业务逻辑代码。主要步骤包括:添加依赖、启用重试机制、设置重试策略(如异常类型、重试次数、延迟策略等),并可定义重试失败后的回调方法。适用于因瞬时故障导致的操作失败场景。
Spring Retry 教程
|
4月前
|
数据采集 监控 Java
SpringBoot日志全方位超详细手把手教程,零基础可学习 日志如何配置及SLF4J的使用......
本文是关于SpringBoot日志的详细教程,涵盖日志的定义、用途、SLF4J框架的使用、日志级别、持久化、文件分割及格式配置等内容。
300 0
SpringBoot日志全方位超详细手把手教程,零基础可学习 日志如何配置及SLF4J的使用......

热门文章

最新文章