一.Spring boot 入门
1.Spring boot简介
简化spring应用开发的框架;
整个spring技术栈的大整合;
j2EE开发的一站式解决方案;
2.微服务
2014,martin fowler
微服务:架构风格
一个应用应该是一组小型服务;可以通过HTTP的方式进行互通;
每一个功能元素最终都是一个可独立替换和独立升级的软件单元;
3.环境约束
-jdk:13
maven:3.3.7
Intelli JIDEA:2019
SpringBoot 1.5.9RELEASE
4.Spring Boot HelloWorld
一个功能
浏览器发送hello请求,服务器接收请求并处理,响应HelloWorld字符串
1.创建一个maven工程;(jar)
2.导入spring boot相关的依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
3.编写一个主程序;启动spring boot应用
@SpringBootApplication
public class HelloWorldMainApplication {
public static void main(String[] args) {
//启动
SpringApplication.run(HelloWorldMainApplication.class,args);
}
}
4.编写相关的Controller,Service
@Controller
public class HelloWorldController {
@ResponseBody
@RequestMapping("/hello")
public String hello(){
return "HelloWorld";
}
}
5.部署主程序测试
6.简化部署
<!-- 这个插件,可以将应用打包成一个可执行的jar包-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
5.HelloWorld探究
1.pom文件
1.父项目
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
他的父项目是
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath>../../spring-boot-dependencies</relativePath>
</parent>
他相当于真正管理spring boot应用里面的所有依赖版本;
Spring boot的版本仲裁中心
以后导入依赖默认是不需要写版本的(没有在dependencies里面管理的自然就需要声明版本号)
2.启动器
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
spring-boot-starter-web
spring-boot-starter:spring-boot场景启动器;
帮我们导入了web模块正常启动所依赖的组件;
SpringBoot将所有的功能场景都抽取出来,做成一个个的starters(启动器),只需要在项目里引用这些starters相关场景的依赖,所有依赖都会导入进来
2.主程序类,主入口类
@SpringBootApplication
public class HelloWorldMainApplication {
public static void main(String[] args) {
//启动
SpringApplication.run(HelloWorldMainApplication.class,args);
}
}
@ SpringBootApplication:说明这个类是spring boot主配置类,
spring boot 就因该运行这个main方法来启动spring boot应用;
@SpringBootConfiguration:spring boot的配置类;
标注在某个类上表示这是一个Spring Boot的配置类;
@ Configuration:配置类上标志这个注解;
配置类–配置文件;配置类也是容器中的一个组件:Component
@EnableAutoConfiguration:开启自动配置功能;
@AutoConfigurationPackage:自动配置包
6.使用Spring Initiallizer快速创建Spring Boot项目
默认生成的Spring Boot项目;
- 主程序已经生成好了,我们只需要编写自己的业务逻辑
- resources文件夹的目录结构
-
-static : 保存所有的静态资源;js css images;
-
-template:保存所有的模板页面;(Spring Boot默认jar包使用Tomcat,默认不支持JSP页面)
-
可以使用模板引擎(freemarker,thymeleaf);
-
application.properties:Spring Boot应用的配置文件;可以修改一些默认设置
2.配置文件
1.配置文件
SpringBoot使用全局的配置文件,配置文件名是固定的
- application.properties
- application.yml
配置文件的作用:修改SpringBoot自动设置默认配置
YAML(YAML Ain’t Markup Language)
标记语言:
以前的配置文件大多是以 xxxx.xml文件;
YAML以数据为中心,比json,xml跟适合做配置文件;
配置实例
server:
port: 8081
2.YAML语法:
1.基本语法:
k: v : 表示一对键值对(空格必须有)
以空格的缩进来控制层级的关系;只要左对齐的一列数据,都是同一层级的
server:
port: 8080
path:/hello
属性和值也是大小写敏感的;
2.值的写法
字面的值:普通的值(数字,字符串,布尔)
k:v :字面直接写;
字符串默认不用加上双引号;
“” : 不会转义字符串里面的特殊字符,例如"hello\n"不会换行
‘’ : 会转义特殊字符
对象,Map(属性和值)(键值对):
对象还是k: v的方式
friends:
lastName: heyutang
age: 20
行内写法:
friends: {lastName: heyutang,age: 20}
数组,集合(List,Set):
用-表示数组中的一个元素
pets:
- cat
- dog
- pig
行内写法
pets: [dog,pig,cat]
3.配置文件值注入
配置文件
person:
lastName: zhansan
age: 19
boss: false
birthday: 2017/10/21
maps: {k1: v1,k2: v2}
lists:
- lisi
- zhaoliu
- heyutang
dog:
name: 哈士奇
age: 3
javaBean:
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
private String lastName;
private Integer age;
private boolean boss;
private Date birthday;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;