SpringBoot

目录

前言:

了解SpringBoot:

一.SpringBoot的创建和使用:

创建Spring Boot项目

 创建一个类输出hello world


前言:

了解SpringBoot:

Spring是为了简化java开发,SpringBoot是为了简化Spring程序开发,是Spring的一次伟大进步

SpringBoot最核心功能:

  • 快速添加依赖 不用在maven里面找了,直接在创建的时候勾选想要的依赖,不版心版本兼容性问题。
  • 内置web容器  不用在本地下载一个tomcat进行部署打包,而是直接运行web容器
  • 自动装配  比如数据库的操作,常规添加依赖,设置Spring datasorce xml设置一些连接数据库参数等,编写代码从Spring中读取从xml链接,设置给datasource对象,这些步骤都和Servlet类似.这些都是手工装配。现在通过Spring boot设置一下数据库,然后自动根据设置内容,构建一个datasouce对象,构建好的对象直接使用

一.SpringBoot的创建和使用:

创建Spring Boot项目

1.new project,注意我们使用的是Springboot 2对应jdk 8.

这个插件需要在Plugins里面搜索Spring boot heaper,下载2022.1月份都是免费版的

现在最新版的是Spring boot3 基于spring 6,jdk最低要17,jdk临时版每半年发布一次,长期版大概三年,隔5个版本

SpringBoot_第1张图片

 

2.勾选一下,红色必要勾选,目前打包管理工具有maven和gradle,gradle比maven打包更快,增量打包和全量打包区别

SpringBoot_第2张图片

 3.选取Spring boot版本和使用的工具包 2.x都是免费的,Spring boot devtools(热部署),spring web

SpringBoot_第3张图片

 4.设置项目名称和路径(不要出现中文)

SpringBoot_第4张图片

 5.完成项目的初始化,红色表示项目没有初始化好不能运行,需要右键添加mavenSpringBoot_第5张图片

 2.目录结构:

SpringBoot_第6张图片

 创建一个类输出hello world

1.添加启动类:

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication//spring boot的启动类
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

2.创建一个类注意和Application平级,写一个方法,实现判别名字输入@RequestMapping设置路由地址

package com.example.demo;

import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller//当前类为控制器
@ResponseBody//返回的是数据,而非页面
public class TestController {
    @RequestMapping("/hi")
    public String sayHi(String name) {
//        if (name == null || name.equals("")) {
//            name = "zhangsan";
//        }
        if(!StringUtils.hasLength(name)){
            name="zhangsan";
        }
        return "nihao " + name;
    }

}

3.运行,输入网站:

 

SpringBoot_第7张图片

网页版创建:

网址:Spring Initializr 

SpringBoot_第8张图片

 生成jar包

SpringBoot_第9张图片

 解压文件在idea中打开即可

二.Spring Boot配置文件

配置文件的作用和格式

在整个项目中所有的重要数据都是在配置文件中配置的

  • 数据库的连接信息 业务中数据库是很多的,到底和哪个连
  • 项目的启动端口 微服务,每个项目分不同模块不同应用程序不同端口
  • 第三方调用密钥等信息 权限限制,存取密钥(放到配置文件中,后期调整密钥直接在配置文件中调,jar包是调整不了的),调用密钥来解决接口
  • 用于发现问题和定位问题的普通日志和异常日志 

总结:1.系统的配置文件 如端口设置,连接数据库的配置,Springboot规定的必须要有

           2.用户自定义配置文件 给用户自己用的

配置文件的格式:

 properties && 

yml可以看做是properties升级版,如果同时出现俩种格式,以properties为主

注意:

约定配置文件开头必须是application

约定yml是层级格式

在resource里面新建yml,设置端口6666,在properties设置8888,结果是8888

SpringBoot_第10张图片

 

 properties配置文件的基本语法:

键值形式,key value之间=连接,例如添加数据库的连接信息:

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/java105?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=123

读取配置文件

properties配置

在项目中想要主动读取配置文件内容使用注解@Value以&{}格式读取

在properties中自定义配置属性:

mytest="张三"

在TestContorller中读取

package com.example.demo;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller//当前类为控制器
@ResponseBody//返回的是数据,而非页面
public class TestController {
   @Value("${mytest}")
    private String mytest;
   
    @RequestMapping("/gerconf")
    public String getConfig(){
        return mytest;
    }

}

 首先注意注解@Value,从指定的配置中找到建mytest将他的值赋给变量mytest,然后设置路径,中读取

结果如下:

SpringBoot_第11张图片

缺陷: 出现乱码问题需要自定义编码格式

另外由于properties没有设置层级会出现很多重复代码:

 使用yml配置文件

基础语法 key:value 中间使用:和空格连接的

server:
  port: 6666
#连接数据库
Spring:
  datasource:
    url:jdbc:mysql://127.0.0.1:3306/java105?characterEncoding=utf8
    name:root
    password: 122

行内写法:也是有空格

Student: {id: 1,name: java,age: 18}

此时想要读取需要注解@ConfigurationProperties

2)yml配置不同数据类型

类型.value,注意~表示null

#字符串
string.value:hello
#布尔值
boolean.value:true
#整数
int.value:10
#浮点数
float.value:3.14
#NUll ~表示null
null.value:~

3)yml单双引号的问题

你可能感兴趣的:(spring,boot,java)