SpringBoot学习1—安装与配置

一. 快速上手springBoot

1.1 简介

SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程§

1.2 创建SpringBoot工程

  • 配置项目结构和java版本
    在这里插入图片描述

  • 选择依赖(这里只选择了web开发)
    在这里插入图片描述

  • 搭建成功
    在这里插入图片描述

  • 运行程序
    在这里插入图片描述

  • 访问网页
    在这里插入图片描述

1.3 springBoot程序优点

  • 起步依赖(简化依赖配置):Spring-boot将所有的依赖的版本统一管理,当自己使用依赖时直接使用即可,避免了包冲突问题
  • 自动配置(简化常用工程相关配置)
  • 辅助功能(内置服务器…)

1.4 SpringBoot的Parent

所有SpringBoot项目要继承的项目,定义了若干个坐标版本号(依赖管理,而非依赖),以达到减少依赖冲突的目的(依赖版本管理)

  • 开发SpringBoot程序要继承Spring-boot-starter-parent
  • spring-boot-starter-parent中定义了若干个依赖管理
  • 继承parent模块可以避免多个依赖使用相同技术时出现依赖版本冲突
  • 继承parent的形式也可以采用引入依赖的形式实现效果(阿里云就是用的这个)

1.5 springBoot的starter:spring-boot-starter-web.pom

starter时SpringBoot中常见项目名称,定义了当前项目使用的所有依赖坐标,以达到减少依赖配置的目的(依赖管理)

  • 开发SpringBoot程序需要导入坐标时通常导入对应的Starter
  • 每个不同的Starter根据功能不同,通常包含多个依赖坐标
  • 使用starter可以实现快速配置的效果,达到简化配置的目的

在实际开发时,在使用任意坐标时,仅仅写GAV终端中G和A,V由SpringBoot提供,除非SpringBoot未提供对于版本的V,如果发生坐标错误,再自己手动指定version(注意出现版本冲突)

1.6 SpringBoot的引导类(整个SprinBoot工程的入口,运行main方法就可以启动项目)

  • SpringApplication.run(GetspringApplication.class, args)实际上是实例化了SpringBoot的容器类(和SpringIOC一样存放Bean对象)
  • @SpringBootApplication用来加载配置
  • SpringBoot工程运行后初始化spring容器,扫描引导类所在包加载bean在这里插入图片描述

1.7 内嵌Tomcat容器

在下面这个包里面内嵌了Tomcat容器

  • 内嵌Tomcat服务器是SpringBoot辅助功能之一
  • 内嵌Tomcat工作原理是将Tomcat服务器作为对象运行,并将该对象交给Spring容器管理
  • 变更内嵌服务器思想是去除现有服务器,添加全新的服务器
  <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
  </dependency>

在SpringBoot中内置了3款服务器:

  • tomcat(默认):apache出品,应用面广,负载了若干较重的组件
  • jetty:更轻量级,负载性能远不及tomcat
  • undertow:负载性能勉强跑赢tomcat

二. Rest开发简介(springMVC知识补充)

2.1 REST简介

REST(Representational State Transfer)表现形式转换,一种访问资源的格式

  • 传统风格资源描述形式
    http://localhost/user/getByID?id=1(get方式)
    http://localhost/user/saveUser(post方式)
  • Rest风格
    http://localhost/user/1(和上面的get方法一样的效果)
    http://localhost/user(和上面的post方式一样的效果)
  • 优点
    1. 隐藏了资源的访问行为,无法通过url得知对资源是何种操作
    2. 书写简化
  • 按照Rest风格访问资源时使用行为动作区分对资源进行了何种操作
    1. http://localhost/users (get查询时是用于查询全部用户信息)
    2. http://localhost/users/1 (get查询时是查询ID为1的用户的信息)
    3. http://localhost/users (POST新增/保存时用于添加用户信息)
    4. http://localhost/users (PUT修改/更新时用于修改用户信息)
    5. http://localhost/users/1 (DELETE删除时用于删除ID为1的用户信息)

上述行为是约定方式,约定不是规范是可以打破的,所以称为REST风格而不是REST规范,描述模块的名称通常使用的是复数,也就是加s的格式描述,表示此类资源,而非当个资源,例如上面的users

2.2 REST简单案例

  • http://localhost/users/1地址执行查询id=1的用户
    1. 设定http请求动作(http://localhost/users/1)
    2. 设定请求参数(路径变量)(value="/users/{chailong})
    3. method:请求动作
    4. @PathVariable:形参注解,用于绑定路径参数与处理器方法形参
@RequestMapping(value="/users/{chailong},method=RequestMethod.GET)
@ResponseBody
public String getById(@PathVariale Integer chailong)
{
//查询操作
}

2.3 REST改进

基于上面的简单案例我们对Rest的使用可以进一步简化


@RestController
@RequestMapping("/books") //加在类上,就代表类下的所有方法都加了这个注解
public class BookController{

@PostMapping //这个等于@RequstMapping(method=RequestMethod.Post)
public String sava(@RequestBody Book book)
{
......
}
@DeleteMapping("/{id}") //这个等于@RequstMapping(value="/{id}" method=RequestMethod.Delete)
public String sava(@RequestBody Book book)
{
......
}

三、基础配置

springBoot中导入对于的Starter后会提供相应的配置,在springBoot的核心配置文件application.properties修改配置(以

3.1 属性配置

修改服务器端口

#修改服务器端口
server.port=80

修改Banner
原始的banner为
在这里插入图片描述

#修改banner
##关闭banner
spring.main.banner-mode=off
##修改banner图片
spring.banner.image.location=banner.jpg

修改日志

#日志配置
##修改日志级别为Debug
logging.level.root=debug 

3.2 种配置文件类型

  • application.properties(传统格式/默认格式)
  • application.yml (主流格式)
  • application.yaml

注意:上面三个配置文件都可以对项目生效,但三个配置文件如果同时存在时会存在加载优先级,其中优先级最高的是properties文件,其次是yml配置文件,最后是yaml配置文件

3.3 yaml数据格式

  • 简介:Yaml(YAML Ain’t Markup Language),一种数据序列化格式
  • 优点:
  1. 容易阅读
  2. 容易与脚本语言交互
  3. 以数据为核心,重数据轻格式
  • YAML文件扩展名

.yml(主流)
.yaml

  • yaml语法规则
  1. 大小写敏感
  2. 属性层级关系使用多行描述,每行结尾使用冒号结束
  3. 使用缩进表示层级关系(类似于Python),同层级左侧对齐,只运行使用空格(不要使用Tap键)
  4. 属性值前面添加空格(属性名与属性值之间使用冒号+空格作为分隔)
  5. #表示注释
country: china
province: beijing
city: beijinig
area: haidian
port: 8080
party: true
birthday: 1949-10-01
#对象属性
user:
  name: itcast
  age: 16
#写多个数据
likes:
   - game
   - music
   - sleep
   - 123
likes2: [game,music,sleep]
#对象数组
users:
  - name: zhangs
  - age: 18
  - 
    name: lisi
    age: 20
user3: [{name:zhangsan,age:18},{name:lisi,age:17}]

3.4 读取yaml单一属性数据

使用@Value读取单个数据,属性名引用方式:${一级属性名.二级属性名…}
yaml数据

country: beijing
user:
  name: chailong
  age: 16
likes: [sleep,reading,eating]

控制器代码

//rest模式
@RestController
@RequestMapping("/books")
public class BookController {
    //读取yaml中的单一属性数据
    @Value("${country}")
    private String country1;
    @Value("${user.name}")
    private String name;
    @Value("${likes[1]}")
    private String hobby;
    @GetMapping
    public String getById(){
        System.out.println(country1);
        System.out.println(name);
        System.out.println(hobby);
        return "chailong";
    }
}

运行结果:
在这里插入图片描述

3.5 yaml文件中变量的引用

使用${属性名}直接引用文件中的其他变量

age1: 14
#使用${属性名}引用数据
info:
  name: jack
  age: ${age1}#引用

3.6 读取yaml全部属性的数据

封装全部数据到Environment对象封装全部配置信息,使用@Autowired自动装配数据到Environment对象中

import org.springframework.core.env.Environment;
@RestController
@RequestMapping("/books")
public class BookController {
    //使用自动装配将所有的数据装配到env中
    @Autowired
    private Environment env;
    @GetMapping
    public String getById(){
        System.out.println(env.getProperty("info.age"));//读取数据
        return "chailong";
    }
}

3.7 读取yaml引用类型数据

  • 读取流程
  1. 创建一个类用于封装要封装的数据
  2. 由Spring帮助我们去加载数据到对象中(要告诉Spring加载这组信息)
  3. 从Spring中直接获取数据
  1. 在yaml中定义数据
datasource:
  driver: com.mysql.jdbc.Driver
  url: jdbc:mysql://localhost/spring_db
  username: root
  password: root666
  1. 定义数据用于封装数据
@Component //定义为spring的bean
@ConfigurationProperties("datasource")
public class Mydatasource {
    private String driver;
    private String url;
    private String username;
    private String password;
    public String getDriver() {
        return driver;
    }
    public void setDriver(String driver) {
        this.driver = driver;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
}
  1. 控制器中装配
    @Autowired
    private Mydatasource data;
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值