一:
(1).springboot 的简介:
- ①springboot是spring家族中一个全新的框,用来简化spring应用程序的创建和开发过程,也可以说springboot能简化我们之前采用Springmvc+spring+Mybatis框架开发的过程;
②.在以往我们采用Springmvc+spring+Mybatis框架进行开发的时候,搭建和整合三大框架需要做很多的工作,如:配置web.xml配置spring.配置mybatis,并将它们整合在一起,而springboot框架对开发的过行了革命性的颠覆,抛弃了繁琐的xml配置,采用大量的默认配置简化我们的开发;
③.采用了springboot可以非常容易的和快速的创建spring框架的应用程序,他让代码变,配置,部署,监控变的简单;
(2).springboot的特性:
- ①.能够快速的创建基于spring的应用程序 ②.能够直接使用java
main方法启动内部的tomcat,jetty服务器运行springboot程序,不需要war包文件; ③.提供约定的start
pom来简化Maven配置,让Maven变的更简单; ④.根据项目的Maven依赖培植
,springboot自动配置spring,springmvc等 ⑤.提供了程序的健康检查功能
⑥.基本可以完全不使用XML配置文件,采用注解配置
(3).springboot的四大核心:
- ①自动配置:针对很多spring应用程序和常见的应用功能,springboot能自动配置;
②起步依赖:告诉springboot需要什么功能.他就能引入需要的依赖库;
③Actuator:让你能够深入运行中的springboot应用程序.一探springboot程序的内部信息;
④.命令行界面:这是springboot的 可选特性,主要针对Groovy语言使用
(4).springboot的开发环境:
可以自己选择则
(在eclipse中开发需要安装sts插件 自行搜索)
(5).第一个springboot程序:
- ①.创建一个Springboot项目
https://start.spring.io/这个是网页创建的方式
在依赖中选择web pom.xml中的依赖:
<!-- 继承springboot的父级项目的依赖 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.springboot.demo</groupId>
<artifactId>day01-springboot-web</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>day01-springboot-web</name>
<description>Demo project for Spring Boot</description>
<!--属性配置 -->
<properties>
<java.version>1.8</java.version>
</properties>
<!-- springboot开发web项目的起步依赖 -->
<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>
<!-- bootspring提供的项目编译打包插件 -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
②.加入springboot的父级和起步依赖 上面有介绍
③.创建springboot的入口main方法入口是创建好的
④.创建一个springmvc 的controller 建一个包为controller
@Controller
public class HelloController {
@RequestMapping("/boot/hello")
public @ResponseBody String hello() {
return "hello Spring boot";
}
}
⑤.运行springboot 的入口main方法
结束
(6).对一个程序的解析:
- ①.springboot的父类依赖spring-boot-start-parent配置之后,当前的项目是springBoot项目(在pom.xml中找到父类依赖
ctrl + 鼠标左键可以看依赖的包)
②.spring-boot-start-parent是一个特殊的start依赖,它用来提供相关Maven默认依赖,使用它之后,.常用的jar包依赖可以省去version(版本)配置;
③.springboot提供了哪些默认jar包的依赖,可以查看父类依赖的pom文件 ④.如果不想使用某个默认
的依赖版本可以通过pom.xml文件的属性配置覆盖各个依赖项,比如覆盖spring版本
<properties>
<spring.veron>5.0.0.RELEASE</spring.veron>
</properties>
- ⑤.@SpringBootApplication注解是sprngboot 的核心注解,主要作用是开启spring的自动配置
⑥main方法是一个标准的java程序的main方法,主要作用是作为项目启动的入口;
⑦.@Controller及@responseBody 依然是我们之前的SpringMVC
,因为springboot的里面依然是使用我们的springmvc+spring+mybatis等框架
(7).springboot的核心配置文件:
springboot的核心配置文件用于配置springboot程序 有阆中格式的配置文件
①.properties (键值对的properties属性文件配置方法)
②.yml文件(yml是一种yaml格式的配置文件,主要采用一定的空格,换行等格式排版进行配置;yaml是一种直观的你呢挂钩被计算机识别的数据格式化,容易被人类阅读,yaml类似xml但是语法比xml简洁的多;
值与前面的冒号配置项必须有一个空格;
yml后缀已可以使用yaml后缀)
例如: .properties实例:
server.port=8080 //端口号
server.context-path=/02-springboot //访问地址加上
.yml实例:
server:
___port: 8090
___context-path: /02-springboot
(8).springboot自定义配置:
我们可以在springboot的核心配置文件自定义配置,然后下用如下注解去读取配置的属性
①.@Value注解:
②.@ConfigurationProperties
例如:在properties自定义配置
boot.name=上海
boot.location=浦东新区
然后用@Value注解:用于逐个读取自定义的配置如:
@Controller
public class ConfigInfoController {
@Value("${boot.name}")
private String name;
@Value("${boot.location}")
private String location;
@RequestMapping("/config")
public @ResponseBody String configInfo() {
return name +"--" + location;
}
}
(注意:网页显示可能会乱码 那么将eclipse中的文件字码修改一下为utf-8)
然后用@ConfigurationProperties注解:用于逐个读取自定义的配置如:
@component
@ConfigurationProperties(prefix="")(里面写包名的前缀 如"com.$$$ $$$这部分就是前缀")
public class MyConfig{
private String name;
public Stirng getName(){
return name;
}
public viod setName(String name){
this.name = name;
}
@RequestMapping("/config")
public @ResponseBody String configInfo() {
return configInfo.getName() + "---"+configInfo.getLocation();
}
}