第1章SpringBoot介绍
讲师:廖师兄
1-1SpringBoot介绍
SpringBoot的特点:
- 化繁为简,简化配置。
- 备受关注,是下一代框架。(是springMVC的升级版)
- 微服务的入门级微框架(微服务基于SpringCloud,而SpringCloud是基于SpringBoot的。)
补充:
1-2为什么要学习springcloud作为我们的微服务框架?
首先如果你只熟悉Java语言,那么你学起来就会非常轻松,它并不需要mybatis、springmvc甚至struts那么多的配置文件,你只需要花时间去思考原理,写一些代码就能很快入门,我发誓它比前面的框架入门要简单,说实话我一直觉得k8s是一个很好的东西,但是k8s的学习曲线就很困难!!!
springcloud的学习会让你对高并发、分布式、服务的降级、熔断及雪崩相关概念理解的更加清晰。springcloud是一套完整的微服务框架,正是因为它是全家桶,看起来繁杂,实际上使用风格很相似,而且拿dubbo来举例,dubbo不具有服务网关、分布式配置、服务跟踪等等功能,而springcloud都具备
1-3springBoot与springMVC的区别:
说得更简便一些:Spring 最初利用“工厂模式”(DI)和“代理模式”(AOP)解耦应用组件。大家觉得挺好用,于是按照这种模式搞了一个 MVC框架(一些用Spring 解耦的组件),用开发 web 应用( SpringMVC )。然后又发现每次开发都写很多样板代码,为了简化工作流程,于是开发出了一些“懒人整合包”(starter),这套就是 Spring Boot。
Spring Boot实现了自动配置,降低了项目搭建的复杂度。众所周知Spring框架需要进行大量的配置,Spring Boot引入自动配置的概念,让项目设置变得很容易。Spring Boot本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于Spring框架的应用程序。也就是说,它并不是用来替代Spring的解决方案,而是和Spring框架紧密结合用于提升Spring开发者体验的工具。同时它集成了大量常用的第三方库配置(例如Jackson, JDBC, Mongo, Redis, Mail等等),Spring Boot应用中这些第三方库几乎可以零配置的开箱即用(out-of-the-box),大部分的Spring Boot应用都只需要非常少量的配置代码,开发者能够更加专注于业务逻辑。
Spring Boot只是承载者,辅助你简化项目搭建过程的。如果承载的是WEB项目,使用Spring MVC作为MVC框架,那么工作流程和你上面描述的是完全一样的,因为这部分工作是Spring MVC做的而不是Spring Boot。
对使用者来说,换用Spring Boot以后,项目初始化方法变了,配置文件变了,另外就是不需要单独安装Tomcat这类容器服务器了,maven打出jar包直接跑起来就是个网站,但你最核心的业务逻辑实现与业务流程实现没有任何变化。
所以,用最简练的语言概括就是:
Spring 是一个“引擎”;
Spring MVC 是基于Spring的一个 MVC 框架 ;
Spring Boot 是基于Spring4的条件注册的一套快速开发整合包。
第2章第一个SpringBoot应用
2-1 第一个SpringBoot应用
1.这里使用的开发软件是IntelliJ Idea,和Eclipse差不太多,界面更炫酷,功能更强大;Android Studio就是基于IntelliJ开发的。
使用IDEA创建SpringBoot项目:(http://start.spring.io/)
项目结构为:
项目默认的 maven pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema- instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/ xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.jxust</groupId>
<artifactId>spirngbootdemo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>spirngbootdemo</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
运行SpirngbootdemoApplication的main方法,就能开始运行。
2.spring boot 启动方式:
- 直接在程序application类中执行run 。(需用@SpringBootApplication这个注解)
- cd进入项目文件夹 执行 mvn spring-boot:run
- cd进入项目文件夹 执行 mvn install (先对项目进行编译), cd进入target文件夹会看到刚才生成的一个 xxx-0.0.1-SNAPSHOT.jar包, java -jar xxx-0.0.1-SNAPSHOT.jar
注意:如果在新建工程的时候没有1.4.1的spring boot,随便选一个就可以,然后在工程的pom.xml文件里的版本改一下就行了。maven会自动导入相关配置。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
注意:maven加载比较慢,解决方案1-1:新建settings.xml文件放在maven本地仓库目录C:\Users\expanxili046.m2\下,配置节点C:\Users\expanxili046.m2\repository及国内镜像:
第3章项目属性配置
3-1项目属性配置
- 3个注解的使用:
a. @Value 从配置文件读取参数
b. @ConfigurationProperties 把yml里面一组配置参数封装成一个类(替代@value,简化!)
c. @Component 向SpringBoot注册一个类
d. @Autowired 注入一个类(这个类需要被@Component注解)
- yml配置文件的使用。(.yml代替.propotites,更方便。注意:.yml配置的冒号后有空格!)
- 多配置文件的使用:
application-dev.yml 开发环境配置文件
application-prod.yml 生产环境配置文件
application.yml 环境切换配置文件
如果配置的是prod就是切换到生产环境;或者是把工程编译打包之后,在命令行运行
以生产模式运行:
java -jar GirlApplication-0.0.1-SNAPSHOT.jar –spring.profiles.active=prod
以开发模式运行:
java -jar GirlApplication-0.0.1-SNAPSHOT.jar –spring.profiles.active=dev
第4章Controller的使用
4-1Controller的使用
@RestController = @Controller+@ResponseBody
@RequestMapping可以在类和方法上用
—>访问不同的url,可以得到相同的结果。使用集合形式:value={”/hello”,”/hi”}
—>@GetMapping 和 @PostMapping 都是相当于简化了@RequestMapping
设置默认值、是否必须:
第5章 数据库操作
5-1 数据库操作(上)
数据库配置:
pom更新后,重新导入文件:在pom.xml中右键 -> maven -> reimport。
jpa操作数据库的五种方式:
update:每次启动,更新表,表里面原来的数据还在的;
create:每次启动,重新创建表,会把表里面的数据删除;
create-drop:应用停下来的时候,就把表给删除;
none:什么都不做;
validate:验证类里面的属性和表结构是否一致,如果不一致的话,会报错。
一般来说,我们设置成update就可以了
5-2 数据库操作(下)
只需继承spring-data-jpa接口,调用改接口的方法,无需写sql:
—>拓展:通过年龄查询: