当前位置: 首页 > news >正文

一个简单的springboot应用搭建过程

今天快速搭建一个springboot基础应用,一起来学习吧。

0、基础环境

  1. jdk: 1.8
  2. ide: idea 2021
  3. maven: 3.8.1
  4. springboot:2.4.2
  5. mysql:8.x

1、创建新项目

利用idea创建基于maven的java项目,这个不用介绍了吧。输入groupId和项目名称完成即可。

2、引入springboot依赖

项目创建完成后,打开pom.xml,加入如下依赖。

  	<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.4.2</version></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies>

3、创建启动类

在新建的包下,创建一个类,名字随便。我就用Application这个名字了。这是个固定写法,复制就行。

@SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}

4、创建application.yml配置文件

在resource文件夹下,创建application.yml文件,内容如下:

server:port: 8080error:include-message: alwaysspring:application:name: springboot-test

ok!, 启动试试,是不是很简单。别着急,还没完。不过这个时候已经是可以运行的应用了,虽然它很简单,但任何复杂的项目不都是一步步构建起来的吗?咱们继续。

5、加入JPA支持

5.1、引入依赖

		<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><!--数据库用mysql,因为springboot已经依赖了,就不用写version标签了--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency>

5.2、写实体类

首先创建包,当然随便写也行,但最好符合常规。代码如下:

@Entity
@Table(name = "t_user")
public class User implements Serializable {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)@Column(name = "id", nullable = false)private Integer id;@Column(name = "name")private String name;@Column(name = "sex")private Boolean sex;
}

5.3、写jpa操作的接口类

public interface UserRepository extends JpaRepository<User, Integer> {
}

不用多写,常用的crud方法已经定义在接口里了,有个性需求在这个接口里自定义。不多说了,关于详细的JPA的用法请查看相关文档。另外,每次说到这里,总有人跳出来和我争论,mybatis多好多好,为什么要用jpa,这里不做讨论,有兴趣的同学去搜索。

5.4、启动类上加注解

@SpringBootApplication
@EntityScan(basePackages = "org.example.jackie.sbt.entity")
@EnableJpaRepositories(basePackages = "org.example.jackie.sbt.repository")
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}

仔细看,我加了两个注解,@EntityScan和@EnableJpaReposotories,里面的basePackages都指向了他们对应的包。你按自己的包修改。

5.5、修改配置文件

这里的配置文件,在上面的基础上,添加数据库的配置和jpa的配置。这里贴上所有的配置。

server:port: 8080error:include-message: alwaysspring:application:name: springboot-testdatasource:username: rootpassword: 123456url: jdbc:mysql://127.0.0.1:3306/my_coupon?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true&zeroDateTimeBehavior=convertToNull&serverTimezone=UTCtype: com.zaxxer.hikari.HikariDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverhikari:pool-name: StrasCouponHikariconnection-timeout: 5000idle-timeout: 30000maximum-pool-size: 10minimum-idle: 5max-lifetime: 60000auto-commit: truejpa:show-sql: truehibernate:ddl-auto: noneproperties:hibernate.format_sql: truehibernate.show_sql: trueopen-in-view: false

完了,再启动试试,要是没保存,至少说明你没有错误。

6、单元测试

6.1、写jpa的测试类

@ExtendWith(SpringExtension.class)
@DataJpaTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@TestPropertySource("classpath:test.properties")
public class UserRepositoryTest {@Testpublic void testUserAdd() {System.out.println("-----");User user = new User();user.setName("张三");user.setSex(Boolean.FALSE);user = userRepository.save(user);Optional<User> user2 = userRepository.findById(user.getId());assertThat(user2.get().getName().equals("张三"));}@Autowiredprivate UserRepository userRepository;
}

注意,测试类写到测试的文件夹中,并且和被测试类在同样的包中。

6.2、test.properties内容

pring.datasource.url=jdbc:mysql://localhost:3306/my_coupon?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true&zeroDateTimeBehavior=convertToNull&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

其实就是配置了mysql的连接参数。

6.3、添加测试依赖

 		 <!--test--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><dependency><groupId>org.assertj</groupId><artifactId>assertj-core</artifactId><scope>test</scope></dependency>

7、总结

以上从头到尾搭建了一个最简单的springboot应用,虽然很小,但是从连接数据库,到repository层的测试,内容也不少,希望大家有自己的收获。

相关文章:

  • 第2部分:物联网模式在行动
  • Vue进阶之Vue无代码可视化项目(七)
  • 口袋奇兵游戏攻略:云手机辅助战锤入侵策略指南!
  • 防御综合实验作业2
  • Web开发:<br>标签的作用
  • 裸金属服务器
  • Java:Bean实体对象和Map互相转换
  • 内容长度不同的div如何自动对齐展示
  • C/C++蓝屏整人代码
  • npm install时报错 reason: certificate has expired
  • PCB(印制电路板)制造涉及的常规设备
  • 阿里云DSW实例中安装并运行Neo4J
  • 万界星空科技MES系统生产计划管理的功能
  • JAVASE-医疗管理系统项目总结
  • 【力扣】最小栈
  • Angular2开发踩坑系列-生产环境编译
  • CentOS 7 修改主机名
  • CODING 缺陷管理功能正式开始公测
  • ES6 ...操作符
  • MySQL几个简单SQL的优化
  • React-生命周期杂记
  • 编写符合Python风格的对象
  • 当SetTimeout遇到了字符串
  • 对象管理器(defineProperty)学习笔记
  • 将 Measurements 和 Units 应用到物理学
  • 让你的分享飞起来——极光推出社会化分享组件
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 思否第一天
  • 微信小程序设置上一页数据
  • 学习笔记:对象,原型和继承(1)
  • 用jQuery怎么做到前后端分离
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • 如何正确理解,内页权重高于首页?
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​【经验分享】微机原理、指令判断、判断指令是否正确判断指令是否正确​
  • ![CDATA[ ]] 是什么东东
  • #NOIP 2014# day.2 T2 寻找道路
  • (C++二叉树05) 合并二叉树 二叉搜索树中的搜索 验证二叉搜索树
  • (二)hibernate配置管理
  • (附源码)ssm码农论坛 毕业设计 231126
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转)大型网站的系统架构
  • (转)甲方乙方——赵民谈找工作
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .NET 发展历程
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • @Autowired 与@Resource的区别