• Spring Boot学习笔记(1)



    学习资料: 官网手册视频

    1.环境

    1.win

    1.下载vscode
    2.安装jdk,我电脑有这个环境,没有的可以搜一下,记得配置环境变量;然后如果电脑里有多个jdk的话,切换的时候在环境变量里把JAVA_HOME的值变成你要的版本,我现在用的是17版本,所以是C:\Program Files\Java\jdk-17.0.4.1。查看:java -version
    3.安装maven,然后配置环境变量path,可以参考博文,我的版本3.9.4,然后在conf/settings.xml 里面配置本地仓库地址和jdk版本:

    <localRepository>D:\repository</localRepository>
    <profiles>
      <profile>
        <id>java-17</id>
        <activation>
          <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
          <maven.compiler.source>17</maven.compiler.source>
          <maven.compiler.target>17</maven.compiler.target>
        </properties>
      </profile>
    </profiles>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    并修改阿里云镜像:

     <mirror>
          <id>alimaven</id>
          <name>aliyun maven</name>
          <url>http://maven.aliyun.com/nexus/content/groups/public/
          <mirrorOf>central</mirrorOf>        
        </mirror>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    配置完之后可以mvn -version查看maven版本和配置的jdk版本
    4.在vscode里面安装插件:Java Extension Pack(Java扩展)和Spring Boot Extension Pack(Spring Boot扩展)和Lombok Annotations Support for VS Code。
    5.配置vscode中配置:设置,扩展,java debugger,edit in settings.json,添加:

    "java.configuration.maven.userSettings": "D:\\Softwares\\apache-maven-3.9.4\\conf\\settings.xml",
    "maven.executable.path": "D:\\Softwares\\apache-maven-3.9.4\\bin\\mvn",
    "java.home":"C:\\Program Files\\Java\\jdk-17.0.4.1",
    
    • 1
    • 2
    • 3

    6.创建Spring Boot项目
    Ctrl+Shift+p输入Spring选择greate a Maven project,java,填写Groupid和项目名称等信息,选择Jar包,我的jdk是17,选择spring web,然后在跳出来的文件框里选择项目保存地址。
    DevTools(代码修改热更新,无需重启)、Web(集成tomcat、SpringMVC)、Lombok(智能生成setter、getter、toString等接口,无需手动生成,代码更简介)、Thymeleaf(模板引擎)。
    然后打开这个项目,先测试一下,在src\main\java\com\公司域名\项目名\controller\HelloController.java里面写:

    package com.wlw.demo2.controller;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    @RestController
    public class HelloController {
        @GetMapping("/hello")
        public String hello() {
            return "hello world";
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    然后运行主文件,就可以在http://localhost:8080/hello查看到hello world。
    这里修改一下pom.xml里面的一些配置文件:

    <java.version>17</java.version>
    
    • 1

    7.项目打包的话用:mvn clean package把项目打成可执行的jar包,然后运行java -jar demo.jar启动项目。
    ● 官方提供的场景:命名为:spring-boot-starter-*
    ● 第三方提供场景:命名为:*-spring-boot-starter
    集中式管理配置,只需要修改application.properties文件

    2.mac

    1.安装jdk:先去官网下载jdk,然后安装,我装的jdk20。
    配置环境变量:
    输入/usr/libexec/java_home -v 20查看jdk20版的安装目录,然后打开环境变量配置文件:vim ~/.bash_profile,然后在里面配置刚才查的jdk的安装目录:

    export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-20.jdk/Contents/Home
    export PATH=$JAVA_HOME/bin:$PATH
    
    • 1
    • 2

    输入:source ~/.bash_profile让环境变量生效,然后输入java -version就可以查看到自己的java版本(20.0.2)。
    2.安装maven:先去官网下载,然后解压这个包(右键,open with,archive utility),将文件夹放到自己保存的地方。
    然后开始配置maven的环境,vim ~/.bash_profile

    export MAVEN_HOME=/Users/zoe/Documents/springboot_files/apache-maven-3.9.4 
    export PATH=$MAVEN_HOME/bin:$PATH
    
    • 1
    • 2

    输入:source ~/.bash_profile让环境变量生效,然后输入mvn -version就可以查看到自己的java版本(3.9.4)。
    这里我是在Bash shell里面修改了这些,但我有时也会用Zsh shell,所以将jdk和maven的环境变量也加入到zsh shell里:

    vim ~/.zshrc
    export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-20.jdk/Contents/Home
    export PATH=$JAVA_HOME/bin:$PATH
    export MAVEN_HOME=/Users/zoe/Documents/springboot_files/apache-maven-3.9.4
    export PATH=$MAVEN_HOME/bin:$PATH
    source ~/.zshrc
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    最后对maven的conf里面的setting文件里和win做一样的修改,我的里面他已经默认用jdk20了,所以现在只需要设置一个仓库就可以:Users/zoe/Documents/springboot_files/repository
    3.在vscode里面安装插件,然后配置:设置,扩展,java debugger,edit in settings.json,添加:

    "java.configuration.maven.userSettings": "/Users/zoe/Documents/springboot_files/apache-maven-3.9.4/conf/settings.xml",
    "maven.executable.path": "/Users/zoe/Documents/springboot_files/apache-maven-3.9.4/bin/mvn",
    "java.home": "/Library/Java/JavaVirtualMachines/jdk-20.jdk/Contents/Home"
    
    • 1
    • 2
    • 3

    4.创建项目测试:
    command+shift+p:greate a Maven project,然后同上。

    3. IDEA

    感觉都是用IDEA,所以给电脑也下了一个,首先去官网,下载安装idea,创建maven工程,选择自己电脑的jdk位置,用org.apache.maven.archetypes:maven-archetype-quickstart,打开工程后打开setting里面的Build,Execution,Deployment里面的BuildTools里面的Maven,然后在Maven home path里面选择自己下载的maven地址,然后settings file可以选择自己maven地址里面的conf/settings.xml。最后再看一下Maven里面的runner里面的jdk是不是自己本地的版本。最后再打开刚才配置的maven道德配置文件setting.xml(D:\Softwares\apache-maven-3.9.4\conf\setting.xml),给里面设置自己的本地仓库地址和阿里云镜像。

    2.知识点

    1.Record类

    1.Record类通常用于表示具有固定属性的数据对象,自动生成一个构造函数,用于初始化对象的属性,提供了默认的实现,如构造函数、equals()、hashCode() 和 toString() 方法以及获取属性的公共访问器。
    创建:

    package org.example.pk1;
    public record Student(Integer id,String name,String email,Integer age) {
    }
    
    • 1
    • 2
    • 3

    然后使用junit4.12进行测试,这里需要在pom里面修改一下版本然后更新库。
    在类名上(Alt+Enter)选择Create Test,JUnit4。
    在测试类里(Alt+Insert)选择TestMethod,快速生成测试方法。

    //1.使用record类创建对象
    Student zs=new Student(1,"张三","11@qq.com",18);
    Student ls=new Student(2,"李四","22@qq.com",19);
    //2.使用record对象的tostring方法
    System.out.println("张三:"+zs.toString());//张三:Student[id=1, name=张三, email=11@qq.com, age=18]
    //3.公共访问器获取属性值
    System.out.println(zs.name());//张三
    //4.equals方法
    System.out.println(zs.equals(ls));//false
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    2.record 类可以包含实例方法和静态方法,就像普通的类一样。

    public record Student(Integer id, String name, String email, Integer age) {
        //1.实例方法,用对象访问
        public String concat(){
            return String.format("姓名是%s,年龄是%d",this.name,this.age);
        }
        //2.静态方法,类访问
        public static String emailToUpper(String email){
            return Optional.ofNullable(email).orElse("no email").toUpperCase();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在test里面分别用对象和类访问

      @Test
        public void test2() {
            Student zs=new Student(1,"张三","11@qq.com",18);
            //1.使用对象,调用实例方法
            System.out.println(zs.concat());//姓名是张三,年龄是18
        }
    
        @Test
        public void test3() {
            //2.使用类,调用静态方法
            System.out.println(Student.emailToUpper("zs@qq.com"));//ZS@QQ.COM
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    3.构造方法:紧凑的,规范的,定制的。
    4.record类的接口实现:当一个类声明它将实现一个接口时,它需要提供接口中定义的所有抽象方法的具体实现。
    首先定义接口和接口要实现的方法:

    package org.example.pk1;
    public interface PrintInterface {
        //1.定义接口内的方法
        void myprint();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    然后创建record类实现接口,定义接口方法的具体实现:

    package org.example.pk1;
    import java.util.StringJoiner;
    public record ProducRecord(Integer id, String name, Integer num) implements  PrintInterface {
        @Override
        public void myprint() {
            StringJoiner j=new StringJoiner("&");
            String s=j.add(id.toString()).add(name).add(num.toString()).toString();
            System.out.println("商品信息是"+s);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    最后在测试类里,使用对象调用接口方法:

    @Test
        public void test4(){
            ProducRecord p1=new ProducRecord(1,"手机",50);//商品信息是1&手机&50
            p1.myprint();
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    5.record可以局部使用,嵌套使用,instanceof。

    2.Switch开关表达式

    1.Switch 新的语法:case label -> 表达式

    @Test
        public void test5() {
            int week=2;
            String out="";
            switch(week){
                case 1,7 -> out="今天休息";
                case 2,3,4,5,6->out="今天工作";
                default -> throw new RuntimeException("无效周日期");
            }
            System.out.println(out);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    2.yeild 让 switch 作为表达式,能够返回值:变量 = switch(value) { case v1: yield 结果值; case v2: yield 结果值;case v3,v4,v5… yield 结果值

        @Test
        public void test6() {
            int week=7;
            String out=switch(week){
                case 1,7:yield "休息";
                case 2,3,4,5,6:yield "工作";
                default:yield "错误格式";
            };
            System.out.println(out);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    3.switch 表达式中使用 record,结合 case 标签-> 表达式,yield 实现复杂的计算。

    3. var和sealed

    1.Text Block 文本块:使用三个双引号字符括起来的字符串
    2.var 声明局部变量:var 标识符声明具有非空初始化式的局部变量
    3.sealed 密封类:主要特点是限制继承,Java 中已有final 关键字,修饰类不能被继承和 private限制私有类;
    而sealed 作为关键字可在 class 和 interface 上使用,结合 permits 关键字,定义限制继承的子类,子类声明有三种
    final 终结,依然是密封的
    sealed 子类是密封类,需要子类实现
    non-sealed 非密封类,扩展使用,不受限

    4.springboot

    1.脚手架
    Spring Initializr 脚手架的 web 地址: https://start.spring.io/
    阿里云脚手架:https://start.aliyun.com
    2.运行和打包
    A.开发工具,例如 IDEA 执行 main 方法
    B.Maven 插件 mvn spring-boot:run
    C:打包后:java -jar XXX.jar,这里首先在pom.xml里面做一点儿配置:

    <packaging>jar</packaging>//1.将工程打包成jar包的形式
    <build>
    	<finalName>myjavajar</finalName>//2.打包成jar包的名字
    ...
    </build>
    //3.在maven的Lifecycle里面clean一下,然后选择package打包,就会在项目的target目录下生成jar包
    java -jar myjavajar.jar//4.在命令行里运行jar包
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    3.配置文件
    配置:properies 或 yaml(yml)文件
    使用:@Value(”${key:默认值}“)
    4.Environment
    外部化的抽象,是多种数据来源的集合。从中可以读取 application 配置文件,环境变量,系统属性。使用方式在 Bean 中注入Environment,注入环境对象的注解是:@Autowired,然后调用它的 getProperty(key)方法。
    5.多环境配置
    Spring Boot 规定环境文件的名称 application-{profile}.properties(yml)。其中 profile 为自定义的环境名称,推
    荐使用 dev 表示开发 ,test 表示测试。prod 表示生产,feature 表示特性。 profile 名称是自定义的。Spring Boot
    会加载 application 以及 application-{profile}两类文件。配置文件里:spring.config.activate.on-profile:XXX(比如dev),在application里面配置激活的是哪个环境:spring.profiles.active:XXX(比如dev)
    6.读取多个配置文件数据:@ConfigurationProperties(prefix="XXX")属性是非静态的。

    5.启用lombok

    在这里插入图片描述

  • 相关阅读:
    react中受控组件与非受控组件
    现场直击 | 复旦MBA科创青干营开营
    货币系统(求方案数的背包)
    台达DOP-B07S410触摸屏出现HMI no response无法上传的解决办法
    德大黄鱼开捕 年产量20万吨 京东超市多举措保障黄鱼品质
    Spring.Boot Web开发初始静态资源处理《课时九》
    C++进阶--C++11(2)
    基于stm32单片机的台历日历计时器万年历Proteus仿真
    绑定点击事件及解绑点击事件
    面试题-springboot篇-SpringBoot的注解
  • 原文地址:https://blog.csdn.net/weixin_38226321/article/details/132825606