SpringBoot 初入门
SpringBoot 初入门
关于介绍什么之类的就不讲了,主要做一下学习记录。
1. 启动方式
IDEA 启动
命令行启动:
mvn spring-boot:run
- 部署到服务器启动:
先进行打包,
mvn clean package
移动到项目的 target 目录下,可以看到一个后缀名为 jar 的文件,便是刚刚我们打包的 jar 包,
使用命令行启动:
java -jar target/luckymoney-0.0.1-SNAPSHOT.jar
- 传参方式启动:
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>
或 @Conroller 和 ResponseBody 返回原来的 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. 具体代码
SpringBoot 初入门的更多相关文章
- SpringData 基于SpringBoot快速入门
SpringData 基于SpringBoot快速入门 本章通过学习SpringData 和SpringBoot 相关知识将面向服务架构(SOA)的单点登录系统(SSO)需要的代码实现.这样可以从实战 ...
- SpringBoot初体验及原理解析
一.前言 上篇文章,我们聊到了SpringBoot得以实现的幕后推手,这次我们来用SpringBoot开始HelloWorld之旅.SpringBoot是Spring框架对“约定大于配置(Conv ...
- SpringBoot Docker入门,SpringBoot Docker安装
SpringBoot Docker入门,SpringBoot Docker安装 ================================ ©Copyright 蕃薯耀 2018年4月8日 ht ...
- 01-项目简介Springboot简介入门配置项目准备
总体课程主要分为4个阶段课程: ------------------------课程介绍------------------------ 01-项目简介Springboot简介入门配置项目准备02-M ...
- SPRING-BOOT系列之SpringBoot快速入门
今天 , 正式来介绍SpringBoot快速入门 : 可以去如类似 https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/refer ...
- SpringBoot快速入门01--环境搭建
SpringBoot快速入门--环境搭建 1.创建web工程 1.1 创建新的工程. 1.2 选择maven工程,点击下一步. 1.3 填写groupid(maven的项目名称)和artifacti ...
- springBoot从入门到源码分析
先分享一个springBoot搭建学习项目,和springboot多数据源项目的传送门:https://github.com/1057234721/springBoot 1. SpringBoot快速 ...
- SpringBoot基础篇-SpringBoot快速入门
SpringBoot基础 学习目标: 能够理解Spring的优缺点 能够理解SpringBoot的特点 能够理解SpringBoot的核心功能 能够搭建SpringBoot的环境 能够完成applic ...
- Springboot快速入门篇,图文并茂
Springboot快速入门篇,图文并茂 文章已托管到GitHub,大家可以去GitHub查看阅读,欢迎老板们前来Star!搜索关注微信公众号 [码出Offer] 领取各种学习资料! image-20 ...
随机推荐
- HTML语义化是什么?为什么要语义化?
HTML语义化HTML的语义化总结为: 用最恰当的标签来标记内容. 该如何理解呢?比如需要加入一个标题,这个标题的字体比正文的要大写,还要加粗.能够实现这种效果的方法有很多,比如用CSS样式进行渲染. ...
- PL/SQL中直接写SQL语句和用EXECUTE IMMEDIATE方法的区别
PL/SQL中直接写SQL语句和用EXECUTE IMMEDIATE方法的区别 在PL/SQL中在执行SQL语句时可以直接写SQL或者可以把一个SQL语句拼成一个字符串,如下: select * fr ...
- mui.toast样式风格及位置修改教程
mui.toast样式风格及位置修改教程 使用了mui.toast来实现可自动消失的信息提示效果. 但默认的显示效果太差了,很不显示,而且是在底部的. 如下图: 想改到屏幕的中间位置,再改大一点. 但 ...
- Ubuntu安装Redis及使用
NoSQL简介NoSQL,全名为Not Only SQL,指的是非关系型的数据库随着访问量的上升,网站的数据库性能出现了问题,于是nosql被设计出来 优点/缺点优点:高可扩展性分布式计算低成本架构的 ...
- vue-图片预览,查看大图
[前言] 在 vue 项目中经常碰到图片预览需求,也就是点击小图查看大图.也有一些这样的第三方插件,如 vue-preview 等.但使用起来感觉版本经常变,而且有时 UI 需要在预览页面上加更多的东 ...
- 10 MySQL之数据备份与恢复
01-数据备份 # 1.使用 MySQLdump 命令备份 MySQLdump 是MySQL提供的一个非常有用的数据库备份工具. MySQLdump 命令执行时,可以将数据库备份成一个文本文件,该文本 ...
- C# WinForm设置窗口大小不可调,取消最大、最小化按键
this.FormBorderStyle = FormBorderStyle.FixedDialog;//设置边框为不可调节 this.MaximizeBox = false;//取消最大化按键 th ...
- RTSP协议-中文定义
RTSP协议-中文定义 转自:http://blog.csdn.net/arau_sh/article/details/2982914 E-mail:bryanj@163.com 译者: Bryan. ...
- Swagger 介绍
简介Swagger 是最流行的 API 开发工具,它遵循 OpenAPI Specification(OpenAPI 规范,也简称 OAS).Swagger 可以贯穿于整个 API 生态,如 API ...
- iOS模型输出和打印
在调试时,我们经常用到输出model,查看数据是否正确,还会在控制台"po 模型"操作,一般输出都是这样的格式的: person is <Person: 0x60800003 ...