1.3 SpringBoot 案例实现
案例需求:请求Controller中的方法,并将返回值响应到页面
(1)使用Spring Initializr方式构建Spring Boot项目**
本质上说,Spring Initializr是一个Web应用,它提供了一个基本的项目结构,能够帮助我们快速构建一个基础的Spring
Boot项目
<img
src="./images/image-20191225114655276.png"
alt="image-20191225114655276" style="zoom:67%;"/>
Project SDK”用于设置创建项目使用的JDK版本,这里,使用之前初始化设置好的JDK版本即可;在“Choose Initializr Service URL(选择初始化服务地址)”下使用默认的初始化服务地址“https://start.spring.io”进行Spring Boot项目创建(注意使用快速方式创建Spring Boot项目时,所在主机须在联网状态下)
<img
src="./images/image-20191225120204561.png"
alt="image-20191225120204561" style="zoom:67%;" />
<img src="./images/image-20191225115448690.png"
alt="image-20191225115448690" style="zoom:67%;" />
Spring Boot项目就创建好了。创建好的Spring Boot项目结构如图:
![image-20191225121806057](./images/image-20191225121806057.png
)
使用Spring Initializr方式构建的Spring
Boot项目会默认生成项目启动类、存放前端静态资源和页面的文件夹、编写项目配置的配置文件以及进行项目单元测试的测试类
(2) 创建一个用于Web访问的Controller
com.lagou包下创建名称为controller的包,在该包下创建一个请求处理控制类HelloController,并编写一个请求处理方法 **(注意:将项目启动类SpringBootDemoApplication移动到com.lagou包下)**
java
@RestController//该注解为组合注解,等同于Spring中@Controller+@ResponseBody注解
publicclass DemoController {
@RequestMapping("/demo")
publicString demo(){
return "你好 spring
Boot";
}
}
(3) 运行项目
运行主程序启动类SpringbootDemoApplication,项目启动成功后,在控制台上会发现Spring Boot项目默认启动的端口号为8080,此时,可以在浏览器上访问“http://localhost:8080/hello”
![image-20191225122944503](./images/image-20191225122944503.png)
页面输出的内容是“hello Spring Boot”,至此,构建Spring Boot项目就完成了
附:解决中文乱码:
解决方法一:
java
@RequestMapping(produces =
"application/json; charset=utf-8"
解决方法二:
properties
设置响应为utf-8
spring.http.encoding.force-response=true
1.4 单元测试与热部署
(1)单元测试
开发中,每当完成一个功能接口或业务方法的编写后,通常都会借助单元测试验证该功能是否正确。SpringBoot对项目的单元测试提供了很好的支持,在使用时,需要提前在项目的pom.xml文件中添加spring-boot-starter-test测试依赖启动器,可以通过相关注解实现单元测试
演示:
1.添加spring-boot-starter-test测试依赖启动器
在项目的pom.xml文件中添加spring-boot-starter-test测试依赖启动器,示例代码如下:
xml
<dependency>
org.springframework.boot
spring-boot-starter-test
test
</dependency>
注意:使用Spring Initializr方式搭建的Spring Boot项目,会自动加入spring-boot-starter-test测试依赖启动器,无需再手动添加
2.编写单元测试类和测试方法
使用Spring Initializr方式搭建的Spring Boot项目,会在src.test.java测试目录下自动创建与项目主程序启动类对应的单元测试类
java
@RunWith(SpringRunner.class) // 测试启动器,并加载Spring Boot测试注解
@SpringBootTest //标记为Spring Boot单元测试类,并加载项目的ApplicationContext上下文环境
class SpringbootDemoApplicationTests {
@Autowired
private DemoController demoController;
//自动创建的单元测试方法实例
@Test
void contextLoads() {
String demo = demoController.demo();
System.out.println(demo);
}
}
上述代码中,先使用@Autowired注解注入了DemoController实例对象,然后在contextLoads()方法中调用了DemoController类中对应的请求控制方法contextLoads(),并输出打印结果
(2)热部署
在开发过程中,通常会对一段业务代码不断地修改测试,在修改之后往往需要重启服务,有些服务需要加载很久才能启动成功,这种不必要的重复操作极大的降低了程序开发效率。为此,Spring Boot框架专门提供了进行热部署的依赖启动器,用于进行项目热部署,而无需手动重启项目
演示:
1.添加spring-boot-devtools热部署依赖启动器
在Spring Boot项目进行热部署测试之前,需要先在项目的pom.xml文件中添加spring-boot-devtools热部署依赖启动器:
xml
<!-- 引入热部署依赖-->
<dependency>
org.springframework.boot
spring-boot-devtools
</dependency>
由于使用的是IDEA开发工具,添加热部署依赖后可能没有任何效果,接下来还需要针对IDEA开发工具进行热部署相关的功能设置
2. IDEA工具热部署设置
选择IDEA工具界面的【File】->【Settings】选项,打开Compiler面板设置页面
<img
src="./images/image-20191225140602409.png"
alt="image-20191225140602409" style="zoom:67%;" />
选择Build下的Compiler选项,在右侧勾选“Build project automatically”选项将项目设置为自动编译,单击【Apply】→【OK】按钮保存设置
在项目任意页面中使用组合快捷键“Ctrl+Shift+Alt+/”打开Maintenance选项框,选中并打开Registry页面,具体如图1-17所示
<img
src="./images/image-20191225141511157.png"
alt="image-20191225141511157" style="zoom:67%;" />
列表中找到“compiler.automake.allow.when.app.running”,将该选项后的Value值勾选,用于指定IDEA工具在程序运行过程中自动编译,最后单击【Close】按钮完成设置
3.热部署效果测试
启动chapter01http://localhost:8080/hello
![image-20191225141703420](./images/image-20191225141703420.png
)
页面原始输出的内容是“hello Spring Boot”。
为了测试配置的热部署是否有效,接下来,在不关闭当前项目的情况下,将DemoController类中的请求处理方法hello()的返回值修改为“你好,Spring Boot”并保存,查看控制台信息会发现项目能够自动构建和编译,说明项目热部署生效
![image-20191225141854983](./images/image-20191225141854983.png)
可以看出,浏览器输出了“你好,Spring Boot”,说明项目热部署配置成功
刚学了拉勾教育的《Java工程师高薪训练营》,看到刚学到的点就回答了。希望拉勾能给我推到想去的公司,目标:字节!!