Spring Boot入门实验
一、 实验目的和要求
1、掌握使用 IDEA 通过 Maven 和 Spring Initializr 的方式创建 Spring Boot 应用程序;
2、掌握 Maven 的工作原理;
3、了解 spring-boot-starter-parent 的配置内容;
4、掌握配置场景依赖启动器 starter 的方式,了解 starter 的原理;
5、掌握利用 starter 扩展 Spring Boot 应用程序的功能;
6、掌握通过配置文件修改 Spring Boot 应用程序的初始化参数及自定义参数的 注入;
7、掌握使用 Spring Boot 编写简单的单元测试;
8、完成 Spring Boot 简单入门程序的编写。
9、独立完成实验
10、书写实验报告书
二、 实验平台
1、 JDK 1.8 或更高版本
2、 Maven 3.3+
3、 IntelliJ IDEA
三、实验内容及结果
(一)Maven 方式搭建项目
- 使用maven创建项目

- 导入依赖
<!-- 父工程 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.10</version>
</parent>
<!-- 起步依赖 -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
- 编写主程序启动类
@SpringBootApplication
public class SpringBootApp {
public static void main(String[] args) {
SpringApplication.run(SpringBootApp.class,args);
}
}
- 创建访问 Web 的 controller
@RestController
public class MyController {
@GetMapping("/hello")
public String hello(){
return "创建第一个springboot项目!";
}
}
(二)Spring Initializr 方式搭建项目
- 选择 Spring Initializr 导航创建项目
进入场景依赖页面,了解左边属于开发场景汇总部分、中间属于场景依赖 启动器部分、右边属于选中的场景依赖。本实验选择 Spring Web 依赖启动器。
- 创建 domain 层实体类 User
@Component
@ConfigurationProperties(prefix = "user")
public class User {
private String stdId;
private String userName;
private String[] hobby;
@Override
public String toString() {
return "User{" +
"stdId='" + stdId + '\'' +
", userName='" + userName + '\'' +
", hobby=" + Arrays.toString(hobby) +
'}';
}
getter,setter方法省略
}
- Application.properties文件
user.stdId=1008611
user.userName=坤哥
user.hobby=唱,跳,rap
- 创建 service 层的实体类 UserService
public class UserService {
@Autowired
private User user;
public User getUser() {
return user;
}
}
- 自定义配置类,创建 config 包的 MyConfig 类
@Configuration
public class MyConfig {
@Bean
public UserService getUserService(){
return new UserService();
}
}
- 创建 controller 层的 UserController 类
@RestController
public class UserController {
@Autowired
private UserService userService;
public User getUser(){
User user = userService.getUser();
return user;
}
@GetMapping("/h")
public String hello(){
return "hello springboot";
}
}
- 编写测试类
@SpringBootTest
public class UserControllerTest {
@Autowired
public UserController userController;
@Test
public void userController(){
User user = userController.getUser();
List<String> hobby = Arrays.asList(user.getHobby());
System.out.println("学号:"+user.getStdId());
System.out.println("姓名:"+user.getUserName());
System.out.println("爱好:"+hobby);
System.out.println(user.toString());
}
}
四、心得体会
(1)Maven 方式和 Spring Initializr 方式创建 Spring Boot 项目有什么区别?
Maven方式创建时,需要自己导入起步依赖和父项目,然后根据需要选择导入相关的依赖,在使用Spring Initializr创建项目时,会自动生成起步依赖和父项目,在选择所需依赖后,会自动导入。
(2)解释项目 pom.xml 文件主要标签的意义
1)作用
通过给出的父项目的group ID, artifact ID and version导入父项目
2)作用
通过group ID, artifact ID and version导入相关依赖
(3)如何理解依赖启动器 starter?
依赖启动器是一个聚合项目,每一个场景的依赖启动器都聚合了这个场景所需要的依赖包括了group ID, artifact ID and version,这样只需要引入场景启动器,就可以使用这个场景下的所有依赖,不需要人为管理版本号。
Spring Boot入门实验的更多相关文章
- Spring Boot入门系列(十七)整合Mybatis,创建自定义mapper 实现多表关联查询!
之前讲了Springboot整合Mybatis,介绍了如何自动生成pojo实体类.mapper类和对应的mapper.xml 文件,并实现最基本的增删改查功能.mybatis 插件自动生成的mappe ...
- 161103、Spring Boot 入门
Spring Boot 入门 spring Boot是Spring社区较新的一个项目.该项目的目的是帮助开发者更容易的创建基于Spring的应用程序和服务,让更多人的人更快的对Spring进行入门体验 ...
- spring boot 入门操作(二)
spring boot入门操作 使用FastJson解析json数据 pom dependencies里添加fastjson依赖 <dependency> <groupId>c ...
- spring boot 入门操作(三)
spring boot入门操作 devtools热部署 pom dependencies里添加依赖 <dependency> <groupId>org.springframew ...
- Spring Boot入门教程1、使用Spring Boot构建第一个Web应用程序
一.前言 什么是Spring Boot?Spring Boot就是一个让你使用Spring构建应用时减少配置的一个框架.约定优于配置,一定程度上提高了开发效率.https://zhuanlan.zhi ...
- Spring Boot入门教程2-1、使用Spring Boot+MyBatis访问数据库(CURD)注解版
一.前言 什么是MyBatis?MyBatis是目前Java平台最为流行的ORM框架https://baike.baidu.com/item/MyBatis/2824918 本篇开发环境1.操作系统: ...
- Spring Boot 入门教程
Spring Boot 入门教程,包含且不仅限于使用Spring Boot构建API.使用Thymeleaf模板引擎以及Freemarker模板引擎渲染视图.使用MyBatis操作数据库等等.本教程示 ...
- Spring Boot入门(五):使用JDBC访问MySql数据库
本系列博客记录自己学习Spring Boot的历程,如帮助到你,不胜荣幸,如有错误,欢迎指正! 在程序开发的过程中,操作数据库是必不可少的部分,前面几篇博客中,也一直未涉及到数据库的操作,本篇博客 就 ...
- Spring Boot入门(四):开发Web Api接口常用注解总结
本系列博客记录自己学习Spring Boot的历程,如帮助到你,不胜荣幸,如有错误,欢迎指正! 在程序员的日常工作中,Web开发应该是占比很重的一部分,至少我工作以来,开发的系统基本都是Web端访问的 ...
- Spring Boot入门(六):使用MyBatis访问MySql数据库(注解方式)
本系列博客记录自己学习Spring Boot的历程,如帮助到你,不胜荣幸,如有错误,欢迎指正! 本篇博客我们讲解下在Spring Boot中使用MyBatis访问MySql数据库的简单用法. 1.前期 ...
随机推荐
- [FE] 被动检测 iframe 加载 src 成功失败的一种思路和方式 (Vue)
思路:设置定时器一个,n 秒后设置 404 或其它,此时给 iframe 的 onload 事件设置回调函数,加载完成则取消定时器. 示例: data () { return { handler: n ...
- [FAQ] Member "address" not found or not visible after argument-dependent lookup in address payable.
顾名思义,address 属性不存在,请检查调用方. 比如:msg.sender.address 会有此提示,在 Solidity Contract 中,msg.sender.balance 是存在的 ...
- Git 版本控制:构建高效协作和开发流程的最佳实践
引言 版本控制是开发中不可或缺的一部分,他允许多人同时协作,通过记录每一次代码的变更,帮助开发者理解何时.为什么以及谁做了修改.这不仅有助于错误追踪和功能回溯,还使得团队能够并行工作,通过分支管理实现 ...
- dotnet 已知问题 错误标记 MethodImplOptions.InternalCall 特性参数将会在类型访问之前抛出 TypeLoadException 异常
本文将记录一个 dotnet 的已知问题.当自己不小心在方法上不正确标记了 MethodImplAttribute 特性时,错误选择了 MethodImplOptions.InternalCall 参 ...
- WPF 应用启动过程同时启动多个 UI 线程且访问 ContentPresenter 可能让多个 UI 线程互等
在应用启动过程里,除了主 UI 线程之外,如果还多启动了新的 UI 线程,且此新的 UI 线程碰到 ContentPresenter 类型,那么将可能存在让新的 UI 线程和主 UI 线程互等.这是多 ...
- SQL server 数据库巡检
SELECT name FROM sysobjects where xtype='u' and name <>'XzryGzGrant' AND name LIKE 'XzryGzGran ...
- 【转载】超级系统工具Sysdig,比 strace、tcpdump、lsof 加起来还强大
可以用sysdig命令做很多很酷的事情 网络 查看占用网络带宽最多的进程 sysdig -c topprocs_net 显示主机192.168.0.1的网络传输数据 as binary: sysdig ...
- gin+grom 求当天的数据列表 0点到24点
框架go-admin gin+gorm mysql表 CREATE TABLE `sq_user_ticket` ( `id` bigint(20) NOT NULL AUTO_INCREMENT C ...
- 远程控制软件 Teamviewer、Splashtop、向日葵哪个好用
编辑切换为居中 添加图片注释,不超过 140 字(可选) 好用的远程控制软件,我一般只推荐这三个经典品牌: Teamviewer.Splashtop.向日葵. Teamviewer 来自德国,妥妥 ...
- 密码学—Vigenere加密Python程序
文章目录 维吉尼亚加密 加密算法 解密算法 注意事项 维吉尼亚加密 古典密码,属于多表加密. 怎么就是多表了? 维吉尼亚密码的加密算法实质是凯撒密码,因为他是先分好小组,然后用密钥串对应着分好组的每一 ...