SpringBoot教程(三) | Spring Boot初体验

SpringBoot教程(三) | Spring Boot初体验

上篇文章我们创建了SpringBoot 项目,并且进行了简单的启动。整个项目了里其实我们就动了两个文件,一个是pom.xml负责管理springboot的相关依赖,一个是springBoot的启动类。

pom文件中通过starter的形式大大简化了配置,不像以前一样需要引入大量的依赖配置,搞不好还得解决冲突。 启动类里就一个main方法,让我们通过一个简单的注解,就可以启动整个项目。相比于之前的ssm简直不要太香。

3.1 Controller开发

那么接下来我们就在这个项目的基础之上来开发一个接口。这里就需要大家要有springmvc的学习基础了。在springmvc中接口的开发都是以controller的形式出现的,那么接下来我们在我们的包结构下创建一个controller包,然后在包里创建一个controller类。

结构如下:

FirstController中全部内容;

java 复制代码
java复制代码package com.lsqingfeng.springboot.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @className: FirstController
 * @description: 第一个Controller
 * @author: sh.Liu
 * @date: 2022-01-10 15:21
 */
@RestController
public class FirstController {

    @RequestMapping("/hello")
    public String helloWorld(){
        return "hello world";
    }
}

重新clean, package, 运行启动类。

在浏览器访问: http://localhost:8080/hello

结果如下:

代表我们的接口已经开发完成,并成功返回了数据。其实上面这些操作完全就是springMvc框架中的内容了,经过前面的配置,相当于我们已经可以在框架中完全使用springmvc了。

3.2 一些问题

1. 关于包扫描

大家都知道,我们在使用ssm的时候,是需要配置一个要扫描的基础包的。一般可以在spring的配置文件的xml中,也可以自通过@ComponentScan注解进行配置。只有配置了相应的包的扫描,那么被扫描的包中的 带有 @Controller, @Service, @Repository, @Component 等注解的类才能够被spring管理,那我们的springBoot项目中并没有配置包的扫描,为什么 我们的Controller能够被扫描到呢(这个Contrller肯定是被扫描到了,否则程序就不可能生效)?

这是因为SpringBoot有一套默认的包扫描规则,当我们没有配置对应的ComponentScan 的时候,程序默认扫描启动类所在的包及其子包。 由于我们创建的controller包正是在启动类所在包下面的一个子包里,所以里边的FirstController可以别扫描到。

当然我们也可以通过@ComponentScan 注解去配置我们想要扫描的包。但是要注意不能在启动类上写,因为启动类上的@SpringBootApplication 注解中已经包含了@ComponentScan注解,那如果我们想要配置应该怎么办呢,那就需要我们自己写一个配置类了。

2. 修改端口号

目前项目启动的默认端口号是8080, 这也是springBoot的一个特点,预设了很多默认值。当然如果我们想要修改可以可以的。修改端口号,需要我们在配置文件中进行指定。springBoot默认的配置文件名是application.properties ,我们也可以使用yml格式的配置文件,就是application.yml 这两种都可以,但是最好不要同时存在。配置文件生效的位置有很多。最常用的就是直接放到resources 目录下,其实就是我们的classPath下。

目前使用yml格式的比较多,我们也已yml格式的为例。 通过server.port 来修改端口号。

如果使用properties写法如下

注意二者区别。yml中通过 缩进来表达层级关系。 properties文件通过.来表达,用=赋值。

修改完之后,clean. package 启动,端口号就生效了。注意,二者尽量不要同时存在。如果非要同时存在,properties文件的优先级更高。

当然配置文件中其实不光是可以修改端口号的,很多配置都可以在这里修改。比如数据库的连接,一些变量的定义等。

3. 关于 @RestController

我们在开发Controller的时候,在类上用的是@RestController注解,这个注解如果大家用过springMvc的肯定了解,它就是 @ResponseBody 和 @Controller注解的混合。

代表这是一个Controller 并且以json的形式进行返回。由于目前主流的项目方式都是前后端发离的形式,后端只需负责返回接口数据即可,无需处理页面跳转等逻辑。所以后端的接口基本都使用@RestController返回数据即可。

也正是上面的原因,所以springBoot整合 jsp,整合 thymeleaf,整合 freemarker等技术,这里也都不讲了,因为用这个实在太少了。 前后端分离已成为主流。

相关推荐
Crossoads1 小时前
【汇编语言】端口 —— 「从端口到时间:一文了解CMOS RAM与汇编指令的交汇」
android·java·汇编·深度学习·网络协议·机器学习·汇编语言
老马啸西风1 小时前
NLP 中文拼写检测纠正论文-02-2019-SOTA FASPell Chinese Spell Checke github 源码介绍
java
向宇it1 小时前
【从零开始入门unity游戏开发之——C#篇26】C#面向对象动态多态——接口(Interface)、接口里氏替换原则、密封方法(`sealed` )
java·开发语言·unity·c#·游戏引擎·里氏替换原则
@菜鸟进阶记@1 小时前
java根据Word模板实现动态填充导出
java·开发语言
卖芒果的潇洒农民1 小时前
Lecture 6 Isolation & System Call Entry
java·开发语言
SomeB1oody1 小时前
【Rust自学】6.1. 定义枚举
开发语言·后端·rust
SomeB1oody1 小时前
【Rust自学】5.3. struct的方法(Method)
开发语言·后端·rust
Amarantine、沐风倩✨2 小时前
设计一个监控摄像头物联网IOT(webRTC、音视频、文件存储)
java·物联网·音视频·webrtc·html5·视频编解码·七牛云存储
路在脚下@3 小时前
spring boot的配置文件属性注入到类的静态属性
java·spring boot·sql
啦啦右一3 小时前
Spring Boot | (一)Spring开发环境构建
spring boot·后端·spring