767-2小时学会Spring Boot
http://www.imooc.com/learn/767
简介:Spring Boot是用来简化Spring应用初始搭建以及开发过程的全新框架,被认为是Spring MVC的“接班人”,和微服务紧密联系在一起。通过本门课程的学习,你将学会如何使用Spring Boot快速构建应用程序,初步领略Spring Boot的魅力!其后续课程《Spring Boot进阶之Web进阶》.此课专为IT屌丝男程序员打造,女生请慎入! 讲师实战课程《Spring Boot微信点餐系统》 http://coding.imooc.com/class/117.html 《Spring Cloud微服务实战》 http://coding.imooc.com/class/187.html 均已上线
目录
第1章 SpringBoot介绍
1-1 SpringBoot介绍和课程安排
1-1 SpringBoot介绍
SpringBoot优点
编码,部署,配置,监控变得更加简单
SpringBoot和SpringMVC的关系
SpringBoot是SpringMVC的升级版,两者没有必然的联系
SpringBoot的特点
1. 化繁为简,简化配置
2. 备受关注,是下一代框架
3. 微服务的入门级微框架
微服务
SpringBoot => SpringCloud => 微服务
课程目录
1. 第一个SpringBoot程序
2. 自定义属性配置
3. Controller的使用
4. spring-data-jpa
5. 事务管理
注意
1. 具备必要的前置知识
--利用maven构建项目
--Spring注解
--RESTful API
2. 可以不需要先去学SpringMVC
3. Java、Maven等版本保持一致
第2章 第一个SpringBoot应用
快速构建第一个SpringBoot应用
2-1 第一个SpringBoot应用
# 查看Java版本
java -version
# 查看Maven版本
mvn -version
阿里云Maven镜像配置:
<!-- settings.xml -->
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<ur1>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
启动SpringBoot项目:
# /girl
mvn spring-boot:run
# /girl
mvn install
java -jar target/girl.jar
第3章 项目属性配置
项目属性配置的各种方法
3-1 项目属性配置
属性配置
# application.properties
server.port=8888
server.context-path=/girl
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc
加载配置属性注解
单属性
cupSize: B age: 18 content: "cupSize: ${cupSize}, age: ${age}"
@Value("${cupSize}") private String cupSize; @Value("${age}") private Integer age; @Value("${content}") private String content;
组属性
girl: cupSize: B age: 18
@Component @ConfigurationProperties(prefix = "girl") public class GirlProperties { private String cupSize; private Integer age; // ...getter and setter... }
@Autowired private GrilProperties girlProperties;
多环境配置:
# application.yml
spring:
profiles:
active: dev
# application-dev.yml 开发环境
cupSize: B
# application-prod.yml 生产环境
cupSize: F
# 编译
mvn install
# 启动
java -jar target/girl.jar --spring.profiles.active=prod
第4章 Controller的使用
介绍SpringBoot项目中Controller的使用
4-1 Controller的使用
注解 | 说明 |
---|---|
@Controller | 处理http请求 |
@RestController | Spring4之后新的注解,原来返回JSON需要@ResponseBody配合@Controller |
@RequestMapping | 配置url映射 |
模板使用
<!-- pom.xml -->
<dependency>
<groupId>org.springf ramework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- /resources/templates/index.html -->
<hi>hello Spring Boot</h1>
@RequestMapping(value="/helLo", method = RequestMethod.GET)
public String say() {
return "index";
}
处理请求中的参数
注解 | 说明 |
---|---|
@PathVariable | 获取url中的数据 |
@RequestParam | 获取请求参数的值 |
@GetMapping | 组合注解 |
@RestController相当于@ResponseBody与@Controller
@RequestMapping(value={“/hi”, “/say”}, method=RequestMethod.GET)。value可以是个集合
@RequestMapping可以用@GetMapping或@PostMapping代替,省去声明方法
/luckymoney/hello/say/100
@GetMapping(value=”/{id}/say”)
@PathVariable(“id”) Integer id
/luckymoney/hello/say?id=100
@RequestParam(value=”id”, required=false, defaultValue=”0”) Integer id
第5章 数据库操作
SpringBoot中使用spring-data-jpa
5-1 数据库操作(上)
数据库操作
Spring-Data-Jpa -> MySQL
Spring-Data-JPA
JPA(Java Persistence API)定义了一系列对象持久化的标准,目前实现这一规范的产品有Hibernate、TopLink等。
Spring-Data-JPA就是对Hibernate的整合
RESTful API设计:
请求类型 | 请求路径 | 功能 |
---|---|---|
GET | /girls | 获取女生列表 |
POST | /girls | 创建一个女生 |
GET | /girls/id | 通过id查询一个女生 |
PUT | /girls/id clipbogu | 通过id更新一个女生 |
DELETE | /girls/id | 通过id删除一个女生 |
步骤:
添加POM依赖
<dependency> <groupId>org.springf ramework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
配置数据库信息和Spring-Data-JPA信息
spring: datasource: driver-class-name: com.mysql.jdbc.Driver ur1: jdbc:mysql://127.0.0.1:3306/dbgirl username: root password: 123456 jpa: hibernate: ddl-auto: create show-sql: true
ddl-auto参数:
参数 说明 create 运行时自动创建表。每次程序运行都会创建空表,如果已存在则会先删除表 create-drop 应用停下来的时候就会把表删除 none 不做任何操作。 update 运行时自动创建表。当已存在表则不会操作 validate 验证实体属性是否和表结构一致,不一致则会报错。 创建实体类
@Entity public class Girl { @Id @GenerateValue private Integer id; private String cupSize; private Integer age; // 无参构造函数。必须要有,否则报错 // ...getter and setter... }
运行程序
5-2 数据库操作(下)
Dao
public interface GirlRepository extends JpaRepository<Girl, Integer> { /** * 通过年龄查询 */ public List<Girl> findByAge(Integer age); }
Controller
@RestController public class GirlController { @Autowired private GirlRepository girlRepository; /** * 查询所有女生列表 */ @GetMapping(value = "/girls") public List<Girl> girlList() { return girlRepository.findALL(); } /** * 添加一个女生 */ @PostMapping(value = "/girls") public Girl girlAdd(@RequestParam("cupSize") String cupSize, @RequestParam("age") Integer age) { Girl girl=new Girl(); girl.setCupSize(cupSize); girl.setAge(age); return girlRepository.save(girl); } /** * 查询一个女生 */ @GetMapping(value = "/girls/{id}") public Girl girlFindOne(@PathVariable("id") Integer id) { return girlRepository.findOne(id); } /** * 更新一个女生 */ @PutMapping(value = "/girls/{id}") public Girl girlUpdate(@PathVariable("id") Integer id, @RequestParam("cupSize") String cupSize, @RequestParam("age") Integer age) { Girl girl = new Girl(); girl.setId(id); girl.setCupSize(cupSize); girl.setAge(age); return girlRepository.save(girl); } /** * 删除一个女生 */ @DeleteMapping(value = "/girls/{id}") public void girlDelete(@PathVariable("id") Integer id) { girlRepository.delete(id); } /** * 通过年龄查询女生列表 */ @GetMapping(value = "/girls/age/{age}") public List<Girl> girlListByAge(@PathVariable("age") Integer age) { return girlRepository.findByAge(age); } }
注:
Post使用form-data
Put使用x-www-form-urlencoded
第6章 事务管理
演示了SpringBoot中使用事务的简单例子
6-1 事务管理
@Service
public class GirlService {
@Autowired
private GirlRepository girlRepository;
/**
* 保存两个女生信息
*/
@Transactional(rollbackFor = Exception.class)
public void saveTwo() {
Girl girlA = new Girl();
girlA.setCupSize("A");
girlA.setAge(18);
girlRepository.save(girlA);
Girl girlB = new Girl();
girlB.setAge(19);
girlB.setCupSize("B");
girlRepository.save(girlB);
}
}
@Autowired
private GirlService girlService;
@PostMapping(value="/girls/two")
public void saveGirlTwo(){
girlService.saveTwo();
}
只有查询的时候不加事务,其它任何操作都要加事务。
进行添加操作的时候,如果要求,要么全部添加成功,要么全部失败
@Transactional事务处理注解的使用方法,在serive进行事务处理
事务失败原因:数据库默认为MyISAM不支持事物回滚,需要设置为InnoDB
解决方法: 改为INNODB
更改语句:
ALTER TABLE girl ENGINE=INNODB;
事务失败原因:SpringBoot2.*实体的默认引擎为MyISAM不支持事务,需要配置引擎为为innoDB
解决方法:在application.yml添加配置
spring:
jpa:
database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
第7章 课程回顾
回顾课程内容
7-1 课程回顾
- SpringBoot介绍
- 安装IDEA、Maven并初始化SpringBoot工程
- 配置文件、注入属性
- Controller的使用及注解
- 数据库增删改查
下门课程介绍:
- @Valid表单验证
- AOP统一异常处理
- spring-data-jpa8.用缓存应对高并发
- Jdbc Template
- Mybatis
- Redis
- MongoDB
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 tuyrk@qq.com
文章标题:767-2小时学会Spring Boot
文章字数:2k
本文作者:神秘的小岛岛
发布时间:2019-06-05, 23:54:25
最后更新:2019-11-05, 19:15:03
原始链接:https://www.tuyrk.cn/imooc/767-2Hours-SringBoot/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。