Spring Boot学习笔记(1)

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版本:

php 复制代码
<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>

并修改阿里云镜像:

php 复制代码
 <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>        
    </mirror>

配置完之后可以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,添加:

php 复制代码
"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",

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里面写:

php 复制代码
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";
    }
}

然后运行主文件,就可以在http://localhost:8080/hello查看到hello world。

这里修改一下pom.xml里面的一些配置文件:

php 复制代码
<java.version>17</java.version>

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的安装目录:

python 复制代码
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-20.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH

输入:source ~/.bash_profile让环境变量生效,然后输入java -version就可以查看到自己的java版本(20.0.2)。

2.安装maven:先去官网下载,然后解压这个包(右键,open with,archive utility),将文件夹放到自己保存的地方。

然后开始配置maven的环境,vim ~/.bash_profile

python 复制代码
export MAVEN_HOME=/Users/zoe/Documents/springboot_files/apache-maven-3.9.4 
export PATH=$MAVEN_HOME/bin:$PATH

输入:source ~/.bash_profile让环境变量生效,然后输入mvn -version就可以查看到自己的java版本(3.9.4)。

这里我是在Bash shell里面修改了这些,但我有时也会用Zsh shell,所以将jdk和maven的环境变量也加入到zsh shell里:

python 复制代码
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

最后对maven的conf里面的setting文件里和win做一样的修改,我的里面他已经默认用jdk20了,所以现在只需要设置一个仓库就可以:<localRepository>Users/zoe/Documents/springboot_files/repository </localRepository>

3.在vscode里面安装插件,然后配置:设置,扩展,java debugger,edit in settings.json,添加:

python 复制代码
"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"

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() 方法以及获取属性的公共访问器。

创建:

php 复制代码
package org.example.pk1;
public record Student(Integer id,String name,String email,Integer age) {
}

然后使用junit4.12进行测试,这里需要在pom里面修改一下版本然后更新库。

在类名上(Alt+Enter)选择Create Test,JUnit4。

在测试类里(Alt+Insert)选择TestMethod,快速生成测试方法。

php 复制代码
//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

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

php 复制代码
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();
    }
}

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

php 复制代码
  @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
    }

3.构造方法:紧凑的,规范的,定制的。

4.record类的接口实现:当一个类声明它将实现一个接口时,它需要提供接口中定义的所有抽象方法的具体实现。

首先定义接口和接口要实现的方法:

php 复制代码
package org.example.pk1;
public interface PrintInterface {
    //1.定义接口内的方法
    void myprint();
}

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

php 复制代码
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);
    }
}

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

php 复制代码
@Test
    public void test4(){
        ProducRecord p1=new ProducRecord(1,"手机",50);//商品信息是1&手机&50
        p1.myprint();
    }

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

2.Switch开关表达式

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

java 复制代码
@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);
    }

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

java 复制代码
    @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);
    }

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里面做一点儿配置:

java 复制代码
<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包

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

相关推荐
弗拉唐1 小时前
springBoot,mp,ssm整合案例
java·spring boot·mybatis
Red Red1 小时前
网安基础知识|IDS入侵检测系统|IPS入侵防御系统|堡垒机|VPN|EDR|CC防御|云安全-VDC/VPC|安全服务
网络·笔记·学习·安全·web安全
贰十六2 小时前
笔记:Centos Nginx Jdk Mysql OpenOffce KkFile Minio安装部署
笔记·nginx·centos
2401_857610032 小时前
SpringBoot社团管理:安全与维护
spring boot·后端·安全
知兀2 小时前
Java的方法、基本和引用数据类型
java·笔记·黑马程序员
凌冰_2 小时前
IDEA2023 SpringBoot整合MyBatis(三)
spring boot·后端·mybatis
Natural_yz3 小时前
大数据学习17之Spark-Core
大数据·学习·spark
qq_172805593 小时前
RUST学习教程-安装教程
开发语言·学习·rust·安装
天天进步20153 小时前
Vue+Springboot用Websocket实现协同编辑
vue.js·spring boot·websocket