Spring Boot学习笔记(1)

news2024/9/24 3:29:53

Spring Boot学习笔记(1)

  • 1.环境
    • 1.win
    • 2.mac
    • 3. IDEA
  • 2.知识点
    • 1.Record类
    • 2.Switch开关表达式
    • 3. var和sealed
    • 4.springboot
    • 5.启用lombok

学习资料: 官网, 手册, 视频。

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>

并修改阿里云镜像:

 <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,添加:

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

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里面的一些配置文件:

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

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

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

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,添加:

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

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,快速生成测试方法。

//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 类可以包含实例方法和静态方法,就像普通的类一样。

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里面分别用对象和类访问

  @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类的接口实现:当一个类声明它将实现一个接口时,它需要提供接口中定义的所有抽象方法的具体实现。
首先定义接口和接口要实现的方法:

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

然后创建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);
    }
}

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

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

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);
    }

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);
    }

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包

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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1110816.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

求助C语言大佬:C语言的main函数参数问题

最近在敲代码的过程中&#xff0c;突发奇想&#xff0c;产生了一个疑问&#xff1a; 为什么main函数可以任由我们定义&#xff1a;可以接收一个参数、两个参数、三个参数都接接收&#xff0c;或者可以不接收&#xff1f;这是如何实现的 int main(){retrun 0; } int main (int…

移动app安全检测报告有什么作用?

移动app安全测试是一项至关重要的任务&#xff0c;它能够帮助确保移动应用程序在使用过程中不会受到各种安全威胁的侵害。在如今移动应用程序日益普及的时代&#xff0c;移动app安全测试尤为重要。移动app安全检测报告是基于专业的安全测试团队进行的全面分析后生成的&#xff…

博客积分上一万了

博客积分上一万了 继续努力&#xff0c;勇往直前。

JOSEF约瑟 JD3-40/23 JD3-70/23漏电继电器 AC220V\0.05-0.5A

JD3系列漏电继电器&#xff08;以下简称继电器&#xff09;适用于交流电压至1140V&#xff0c;频率为50Hz&#xff0c;该继电器与分励脱扣器或失压脱扣器的断路器、交流接触器、磁力启动器等组成漏电保护装置&#xff0c;作漏电和触电保护之用&#xff0c;可配备蜂鸣器、信号等…

短视频是“风口”还是“疯口”?

熟悉我的粉丝都知道&#xff0c;最近去追了下短视频的风口&#xff0c;折腾了几个视频出来。且不说视频效果如何&#xff0c;单单是制作视频的过程&#xff0c;就差点没要了童话的老命。看似短短的几分钟&#xff0c;真的应了那句话&#xff1a;台上一分钟&#xff0c;台下十年…

Ubuntu系统忘记Root用户密码-无法登录系统-更改Root密码-Ubuntu系统维护

一、背景 很多时候&#xff0c;我们总会设计复杂的密码&#xff0c;但是大多数时候&#xff0c;我们反而会先忘记我们的密码&#xff0c;导致密码不仅仅阻挡其他用户进入系统&#xff0c;同时也阻碍我们进入系统。 本文将介绍在忘记密码的情况下&#xff0c;如何进入系统并更改…

macOS Sonoma 桌面小工具活学活用!

macOS Sonoma 虽然不算是很大型的改版&#xff0c;但当中触目的新功能是「桌面小工具」&#xff08;Widget&#xff09;。如果我们的萤幕够大&#xff0c;将能够放更多不同的Widget&#xff0c;令用户无须开App 就能显示资讯&#xff0c;实在相当方便。 所有iPhone Widget 也能…

基于Springboot服装商品管理系统免费分享

基于Springboot服装商品管理系统 作者: 公众号(擎云毕业设计指南) 更多毕设项目请关注公众号&#xff0c;获取更多项目资源。如需部署请联系作者 注&#xff1a;禁止使用作者开源项目进行二次售卖&#xff0c;发现必究&#xff01;&#xff01;&#xff01; 运行环境&…

controller调用service层报错Invalid bound statement (not found)

报错信息&#xff1a; "Invalid bound statement (not found): com.gelei.system.service.TbUserFollowService.getMyUserFanList" 这个问题就很神奇&#xff0c;请看下图&#xff0c;我测试的时候就是这么个情况&#xff1b; 综上所述&#xff0c;解决方法如下&…

pragma once与ifndef的区别

概要 代码编译过程中&#xff0c;为了防止同一份代码被重复引用&#xff0c;通常有两种实现方式 方式一 #pragma once 方式二 #ifndef _TEST_H_ #define _TEST_H_ #endif // !TEST_H 通常情况下&#xff0c;使用上述两种方式中的任意一种都是可以的。最近工作中&#xff0c;代…

阿里云ECS服务器的搭建学习

云服务器ECS&#xff1a; 云服务器&#xff08;Elastic Compute Service&#xff0c;简称ECS&#xff09;是阿里云提供的性能卓越、稳定可靠、弹性扩展的IaaS&#xff08;Infrastructure as a Service&#xff09;级别云计算服务。云服务器ECS免去了您采购IT硬件的前期准备&a…

直线模组有哪些配件组成的?

直线模组又称线性模组或线性滑台&#xff0c;是自动化设备中重要的传动元件&#xff0c;主要由以下几部分组成&#xff1a; 1、直线导轨&#xff1a;直线导轨又称线性滑轨&#xff0c;是用于直线往复运动场合的重要零部件&#xff0c;它具有比直线轴承更高的额定负载&#xff0…

吉利高端品牌领克汽车携手体验家,重塑智能创新的汽车服务体验

浙江吉利控股集团&#xff08;以下简称“吉利集团”&#xff09;始建于1986年&#xff0c;1997年进入汽车行业&#xff0c;一直专注实业&#xff0c;专注技术创新和人才培养&#xff0c;坚定不移地推动企业转型升级和可持续发展。现资产总值超5100亿元&#xff0c;员工总数超过…

【内网击穿工具 】NATAPP

内网穿透又叫内网映射&#xff0c;功能是把内网IP映射到公网&#xff0c;使公网也能轻松访问所搭建的服务。 内网与外网 外网指的是一个组织或网络中可公开访问的网络&#xff0c;即对外开放的网络。外网可以通过公共互联网进行访问 内网是相对于外网而言的&#xff0c;指的…

十四、Django框架使用

目录 一、框架简介二、MVT模型简介三、Python的虚拟环境3.1 安装virtualenv 虚拟环境3.2 创建和使用虚拟环境四、Django项目的搭建4.1 安装Django包4.2 创建Django项目4.3 创建Django项目的应用4.4 使用pycharm打开Django项目4.5 注册Django项目的应用4.6 启动Django项目五、OR…

Guava-RateLimiter详解

简介&#xff1a; 常用的限流算法有漏桶算法和令牌桶算法&#xff0c;guava的RateLimiter使用的是令牌桶算法&#xff0c;也就是以固定的频率向桶中放入令牌&#xff0c;例如一秒钟10枚令牌&#xff0c;实际业务在每次响应请求之前都从桶中获取令牌&#xff0c;只有取到令牌的请…

聚观早报 | 荣耀Play8T上市;阿芙“超级品牌日”上线

【聚观365】10月19日消息 荣耀Play8T上市 阿芙“超级品牌日”上线 特斯拉家庭充电服务包更新 TikTok Shop印尼站关停 高通与谷歌合作开发RISC-V芯片 荣耀Play8T上市 3月28日&#xff0c;荣耀推出了荣耀Play 7T系列手机&#xff0c;其最大的卖点就是搭载了6000mAh大电池&a…

`SQL`编写判断是否为工作日函数编写

SQL编写判断是否为工作日函数编写 最近的自己在写一些功能,遇到了对于工作日的判断,我就看了看sql,来吧!~(最近就是好疲惫) 我们一起看看(针对ORACLE) 1.声明: CREATE OR REPLACE PACKAGE GZYW_2109_1214.PKG_FUN_GETDAY_HDAY AS /** * 通过节假日代码获取指定的日期[查找基…

开发小经验积累

今天使用langchain官方文档上的这个包的时候 遇到了这个报错 这个直觉判断肯定是版本问题&#xff0c;我先是去perplexity.ai搜了相关报错 后来没找到什么比较好的回答 这时候想到可以去看当前自己用的版本的langchain的源码&#xff0c;而利用vscode强大的功能&#xff0c;…

linux java 环境变量配置

前提已经存在jdk部署包&#xff0c;并且上传到服务器上 编辑&#xff1a;/etc/profile export JAVA_HOME/home/jdk1.8.0_211/ export JRE_HOME/home/jdk1.8.0_211/jre/ export PATH$JAVA_HOME/bin:$JRE_HOME/bin:$PATH编辑位置&#xff1a; 之后source /etc/profile 查看java…