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等技术,这里也都不讲了,因为用这个实在太少了。 前后端分离已成为主流。

相关推荐
monkey_meng1 分钟前
【遵守孤儿规则的External trait pattern】
开发语言·后端·rust
天天进步20153 分钟前
Vue+Springboot用Websocket实现协同编辑
vue.js·spring boot·websocket
草莓base14 分钟前
【手写一个spring】spring源码的简单实现--bean对象的创建
java·spring·rpc
Estar.Lee16 分钟前
时间操作[计算时间差]免费API接口教程
android·网络·后端·网络协议·tcp/ip
drebander38 分钟前
使用 Java Stream 优雅实现List 转化为Map<key,Map<key,value>>
java·python·list
乌啼霜满天24942 分钟前
Spring 与 Spring MVC 与 Spring Boot三者之间的区别与联系
java·spring boot·spring·mvc
tangliang_cn1 小时前
java入门 自定义springboot starter
java·开发语言·spring boot
程序猿阿伟1 小时前
《智能指针频繁创建销毁:程序性能的“隐形杀手”》
java·开发语言·前端
Grey_fantasy1 小时前
高级编程之结构化代码
java·spring boot·spring cloud
新知图书1 小时前
Rust编程与项目实战-模块std::thread(之一)
开发语言·后端·rust