SpringBoot 初入门

关于介绍什么之类的就不讲了,主要做一下学习记录。


1. 启动方式

  1. IDEA 启动

  2. 命令行启动:

mvn spring-boot:run
  1. 部署到服务器启动:

先进行打包,

mvn clean package

移动到项目的 target 目录下,可以看到一个后缀名为 jar 的文件,便是刚刚我们打包的 jar 包,

使用命令行启动:

java -jar target/luckymoney-0.0.1-SNAPSHOT.jar
  1. 传参方式启动:
java -jar -Dspring.profiles.active=prod target/luckymoney-0.0.1-SNAPSHOT.jar

使用 prod 环境。(多环境配置:使用开发和生产环境)


2. 配置文件

配置文件有两种写法:

  • application.properties
server.port=8081
server.servlet.context-path=/luckmoney
  • application.yml
server:
port: 8081
servlet:
context-path: /luckmoney

推荐后一种写法,结构更清晰。


3. 项目配置

a. 单个配置 @value

在配置文件中使用配置,如下写法:

minMoney: 0.01
description: 最少要发${limit.minMoney}元,最多要发${limit.maxMoney} 元。

然后传入参数:

@Value("${minMoney}")
private BigDecimal minMoney;
b. 对象配置 @ConfigurationProperties

如果配置项很多,并且相互联系,把配置放到对象类中,使用 @Component@ConfigurationProperties 。然后使用 @Autowired 方式自动注入 Controller。

application.yml:

limit:
minMoney: 0.01
maxMoney: 9999
description: 最少要发${limit.minMoney}元,最多要发${limit.maxMoney} 元。

对象配置类 LimitConfig.java :

@Component
@ConfigurationProperties(prefix = "limit")
public class LimitConfig {
private BigDecimal minMoney;
private BigDecimal maxMoney;
private String description;
// getter 和 setter 方法
}

属性注入 Controller.java :

@RestController
@RequestMapping("/hello")
public class HelloController {
@Autowired
private LimitConfig limitConfig;
// 实现方法
}

4. Controller 的使用

名称 作用
@Controller 处理http请求
@RestController Spring4之后新加的注解,原来返回json需要@ResponseBody配合@Controller
@RequestMapping 配置url映射
@PathVariable 获取url中的数据
@RequestParam 获取请求参数的值

@Controller 可以在 springboot 模板注释中用到。

配合:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

@ConrollerResponseBody 返回原来的 json。

@ResponseBody 可以在方法上或类上使用。

总结:@Controller + ResponseBody = @RestController

举个例子:

@RestController
@RequestMapping("/hello")
public class HelloController {
@Autowired
private LimitConfig limitConfig; // RequestParam:地址栏得到 /say?id=1 这种,后两个属性是设置不传参默认为 0
@GetMapping("/say")
public String say(@RequestParam(value = "id", required = false, defaultValue = "0") Integer myId) {
return "id:" + myId;
} // PathVariable:地址栏得到 /say1/1 这种
@GetMapping("/say/{id}")
public String say2(@PathVariable("id") Integer id) {
return "id:" + id;
}
}

@GetMapping 可以传数组。如:

@GetMapping({"hello", "say"})

可以在类上使用 @RequestMapping("/xxx"), 方法上使用 GetMapping("/yyy")PostMapping("/yyy") 来达到:/xxx/yyy 的效果。


5. 数据库操作

springboot 操作数据库是通过 Spring-Data-Jpa 来实现的。

JPA(Java Persistence API)定义了一系列对象持久化的标准。

1. maven 依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>

注意:在springboot 中的maven 依赖不用加版本号,springboot已经帮我们选定好了版本号。

2. 在 application.yml 中设置:
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/luckmoney?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false
username: root
password: xxxx jpa:
hibernate:
ddl-auto: update
# ddl-auto: create (create表示创建,update表示更新)
show-sql: true # 控制台打印sql语句
3. 建表:

建表也可以直接在 springboot 中建,不需要在数据库中建表。

@Entity
public class Luckmoney { // 构造方法
public Luckmoney() {
} @Id
@GeneratedValue
private Integer id; private BigDecimal money; // 发送方
private String producer; // 接收方
private String consumer; // getter 和 setter 方法
}
4. 增删改查

在 springboot 中我们也不需要自己去实现增删改查的方法发,可以自定义个接口,继承 JpaRepository 类,再编写 controller 类实现接口就行了。

接口类:

public interface LuckmoneyRepository extends JpaRepository<Luckmoney, Integer> {
}

JpaRepositroy 参数中第一个是:定义的 Entity,第二个是主键的类型。

实现类:

@RestController
public class LuckymoneyController { @Autowired
private LuckmoneyRepository repository; // 获取红包列表
@GetMapping("/luckmoneys")
public List<Luckmoney> list() {
return repository.findAll();
} }

6. 事务操作

事务操作一般都放在 service 文件下。

注意:

事务是指数据库的事务,不是指 java 事务,@Transactional 注解只是添加了执行,回滚的操作,具体的事务执行还是要根据数据库情况。比如有些数据库不支持事务,MySQL中 MyISAM 引擎是不支持事务的。

  • 查看当前数据库支持的引擎和默认的数据库引擎:
show engines;
  • 修改表引擎:
alter table luckmoney ENGINE=InnoDB;
  • 查看当前表的创建语句:
 show create table luckmoney

7. 具体代码

具体代码:luckmoney

SpringBoot 初入门的更多相关文章

  1. SpringData 基于SpringBoot快速入门

    SpringData 基于SpringBoot快速入门 本章通过学习SpringData 和SpringBoot 相关知识将面向服务架构(SOA)的单点登录系统(SSO)需要的代码实现.这样可以从实战 ...

  2. SpringBoot初体验及原理解析

    一.前言 ​ 上篇文章,我们聊到了SpringBoot得以实现的幕后推手,这次我们来用SpringBoot开始HelloWorld之旅.SpringBoot是Spring框架对“约定大于配置(Conv ...

  3. SpringBoot Docker入门,SpringBoot Docker安装

    SpringBoot Docker入门,SpringBoot Docker安装 ================================ ©Copyright 蕃薯耀 2018年4月8日 ht ...

  4. 01-项目简介Springboot简介入门配置项目准备

    总体课程主要分为4个阶段课程: ------------------------课程介绍------------------------ 01-项目简介Springboot简介入门配置项目准备02-M ...

  5. SPRING-BOOT系列之SpringBoot快速入门

    今天 , 正式来介绍SpringBoot快速入门 : 可以去如类似 https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/refer ...

  6. SpringBoot快速入门01--环境搭建

    SpringBoot快速入门--环境搭建 1.创建web工程 1.1 创建新的工程. 1.2  选择maven工程,点击下一步. 1.3 填写groupid(maven的项目名称)和artifacti ...

  7. springBoot从入门到源码分析

    先分享一个springBoot搭建学习项目,和springboot多数据源项目的传送门:https://github.com/1057234721/springBoot 1. SpringBoot快速 ...

  8. SpringBoot基础篇-SpringBoot快速入门

    SpringBoot基础 学习目标: 能够理解Spring的优缺点 能够理解SpringBoot的特点 能够理解SpringBoot的核心功能 能够搭建SpringBoot的环境 能够完成applic ...

  9. Springboot快速入门篇,图文并茂

    Springboot快速入门篇,图文并茂 文章已托管到GitHub,大家可以去GitHub查看阅读,欢迎老板们前来Star!搜索关注微信公众号 [码出Offer] 领取各种学习资料! image-20 ...

随机推荐

  1. Leetcode题目70.爬楼梯(动态规划+递归-简单)

    题目描述: 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例 1: 输入: 2 输出: 2 ...

  2. shell脚本编程数组

    数组: 变量:存储单个元素的内存空间 数组:存储多个元素的连续的内存空间,相当于多个变量的集合 数组名和索引 索引:编号从0开始,属于数值索引 注意:索引可支持使用自定义的格式,而不仅是数值格式,即为 ...

  3. CentOS7 上搭建 CDH(6.3.0)

    这里以四台节点搭建 IP HostName OS 192.168.8.5 h5(主) CentOS 7.5 192.168.8.6 h6(从) CentOS 7.5 192.168.8.7 h7(从) ...

  4. pm2 常用配置项解析

    1.解析 1. apps:json结构,apps是一个数组,每一个数组成员就是对应一个pm2中运行的应用 2. name:应用程序名称"app" 3. cwd:应用程序所在的目录& ...

  5. 使用 docker 快速安装 oracle 11g

    前言 我们在手动安装oracle数据库时,安装步骤纷繁复杂,耗时较长 在此介绍如何使用docker快速安装oracle 11g 一.docker 及其安装环境 操作系统: [root@centos7 ...

  6. Go语言学习之介绍与环境搭建

    Go语言第一课 一.Go语言介绍 1.什么是Go语言? Go 是一个开源的编程语言,它能让构造简单.可靠且高效的软件变得容易. Go是从2007年末由Robert Griesemer, Rob Pik ...

  7. 前端知识扫盲-VUE知识篇一(VUE核心知识)

    最近对整个前端的知识做了一次复盘,总结了一些知识点,分享给大家有助于加深印象. 想要更加理解透彻的同学,还需要大家自己去查阅资料或者翻看源码.后面会陆续的更新一些相关注知识点的文章. 文章只提出问题, ...

  8. 数据分析 - pandas 模块

    数据读取结构 -  DataFrame Series (collection of values) DataFrame (collection of Series objects) Panel (co ...

  9. VBA读写XML文件

    'Write XML file Sub WriteXML(fpa$, fn$) Dim xmlfile As String xmlfile = ThisWorkbook.Path & &quo ...

  10. 微信小程序:undefined Expecting 'STRING', got INVALID

    出现问题: 问题原因:app.json中不能出现注释