SpringBoot教程(三) | Spring Boot初体验
上篇文章我们创建了SpringBoot 项目,并且进行了简单的启动。整个项目了里其实我们就动了两个文件,一个是pom.xml负责管理springboot的相关依赖,一个是springBoot的启动类。
pom文件中通过starter的形式大大简化了配置,不像以前一样需要引入大量的依赖配置,搞不好还得解决冲突。 启动类里就一个main方法,让我们通过一个简单的注解,就可以启动整个项目。相比于之前的ssm简直不要太香。
3.1 Controller开发
那么接下来我们就在这个项目的基础之上来开发一个接口。这里就需要大家要有springmvc的学习基础了。在springmvc中接口的开发都是以controller的形式出现的,那么接下来我们在我们的包结构下创建一个controller包,然后在包里创建一个controller类。
结构如下:
FirstController中全部内容;
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等技术,这里也都不讲了,因为用这个实在太少了。 前后端分离已成为主流。