From 1adf3c2cb6167daa53ba0fb4af3cc3b5088d1f79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B3=95=E7=84=B6?= Date: Mon, 14 Nov 2022 15:47:13 +0800 Subject: [PATCH] =?UTF-8?q?lambada=E8=A1=A8=E8=BE=BE=E5=BC=8F=E5=92=8Cspri?= =?UTF-8?q?gnboot?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Java三方库/logback.md | 172 ++++++-- Java基础教程/Java语言基础/12 Java注解.md | 55 ++- Java基础教程/Java语言基础/13 lambda表达式.md | 387 ++++++++++++++++++ Spring/Springboot/01 内容简介.md | 2 +- .../{02 配置文件.md => 02 创建项目.md} | 0 .../Springboot/{2配置.md => 03 配置文件.md} | 333 +++++++++------ .../{03 基本注解.md => 04 基本注解.md} | 24 +- .../Springboot/image/2022-11-12-15-49-46.png | Bin 0 -> 102623 bytes maven/maven源码/code/.gitignore | 33 ++ .../code/.mvn/wrapper/maven-wrapper.jar | Bin 0 -> 58727 bytes .../code/.mvn/wrapper/maven-wrapper.properties | 2 + maven/maven源码/code/mvnw | 316 ++++++++++++++ maven/maven源码/code/mvnw.cmd | 188 +++++++++ maven/maven源码/code/pom.xml | 47 +++ .../main/java/com/ykl/code/CodeApplication.java | 55 +++ .../main/java/com/ykl/code/config/MyConfig.java | 39 +- .../src/main/java/com/ykl/code/entity/Pet.java | 35 +- .../src/main/java/com/ykl/code/entity/User.java | 75 +++- .../src/main/resources/application.properties | 1 + .../java/com/ykl/code/CodeApplicationTests.java | 13 + 20 files changed, 1590 insertions(+), 187 deletions(-) rename Spring/Springboot/{02 配置文件.md => 02 创建项目.md} (100%) rename Spring/Springboot/{2配置.md => 03 配置文件.md} (59%) rename Spring/Springboot/{03 基本注解.md => 04 基本注解.md} (76%) create mode 100644 Spring/Springboot/image/2022-11-12-15-49-46.png create mode 100644 maven/maven源码/code/.gitignore create mode 100644 maven/maven源码/code/.mvn/wrapper/maven-wrapper.jar create mode 100644 maven/maven源码/code/.mvn/wrapper/maven-wrapper.properties create mode 100755 maven/maven源码/code/mvnw create mode 100644 maven/maven源码/code/mvnw.cmd create mode 100644 maven/maven源码/code/pom.xml create mode 100644 maven/maven源码/code/src/main/java/com/ykl/code/CodeApplication.java create mode 100644 maven/maven源码/code/src/main/resources/application.properties create mode 100644 maven/maven源码/code/src/test/java/com/ykl/code/CodeApplicationTests.java diff --git a/Java三方库/logback.md b/Java三方库/logback.md index 5db64e68..f1d00dc9 100644 --- a/Java三方库/logback.md +++ b/Java三方库/logback.md @@ -1,21 +1,20 @@ - ## 1 简介 ### 日志组件 -logback是一个开源的日志组件,是log4j的作者开发的用来替代log4j的。logback由三个部分组成,logback-core, logback-classic, logback-access。 - -* 其中logback-core是其他两个模块的基础。 -* logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4j API,使我们可以在其他日志系统,如log4j和JDK14 Logging中进行转换 -* logback-access:访问模块和Servlet容器集成,提供通过Http来访问日志的功能 +logback 是一个开源的日志组件,是 log4j 的作者开发的用来替代 log4j 的。logback 由三个部分组成,logback-core, logback-classic, logback-access。 +- 其中 logback-core 是其他两个模块的基础。 +- logback-classic:它是 log4j 的一个改良版本,同时它完整实现了 slf4j API,使我们可以在其他日志系统,如 log4j 和 JDK14 Logging 中进行转换 +- logback-access:访问模块和 Servlet 容器集成,提供通过 Http 来访问日志的功能 ### 日志级别 + 级别包括:TRACE < DEBUG < INFO < WARN < ERROR ### 配置流程 -1. 添加maven依赖 +1. 添加 maven 依赖 2. 查找配置文件。logback-spring.xml、logback.xml、BasicConfigurator。 3. 加载配置内容。configuration @@ -25,7 +24,7 @@ logback是一个开源的日志组件,是log4j的作者开发的用来替代lo ``` -### maven依赖 +### maven 依赖 ```xml @@ -47,35 +46,31 @@ logback是一个开源的日志组件,是log4j的作者开发的用来替代lo ``` - - ## 2 配置内容 ### configuration + 日志配置的根节点 ``` ``` - ### contextName -的子节点。各个logger都被关联到一个loggerContext中,loggerContext负责制造logger,也负责以树结构排列个logger。 - - +的子节点。各个 logger 都被关联到一个 loggerContext 中,loggerContext 负责制造 logger,也负责以树结构排列个 logger。 ``` atguiguSrb ``` + ### property 的子节点,用来定义变量。 - 有两个属性,name和value:name的值是变量的名称,value是变量的值。 - -通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。 + 有两个属性,name 和 value:name 的值是变量的名称,value 是变量的值。 +通过定义的值会被插入到 logger 上下文中。定义变量后,可以使“${}”来使用变量。 ```xml @@ -100,16 +95,17 @@ logback是一个开源的日志组件,是log4j的作者开发的用来替代lo ``` ### appender -``是``的子节点,是负责写日志的组件.主要用于指定日志输出的目的地,目的地可以是控制台、文件、远程套接字服务器、MySQL、PostreSQL、Oracle和其他数据库、JMS和远程UNIX Syslog守护进程等。 -不同的appender有不同的属性可以配置 +``是``的子节点,是负责写日志的组件.主要用于指定日志输出的目的地,目的地可以是控制台、文件、远程套接字服务器、MySQL、PostreSQL、Oracle 和其他数据库、JMS 和远程 UNIX Syslog 守护进程等。 +不同的 appender 有不同的属性可以配置 ### ConsoleAppender -* ``有两个必要属性name和class:name指定appender名称,class指定appender的全限定名 -* ``对日志进行格式化 - * ``定义日志的具体输出格式 - * ``编码方式 + +- ``有两个必要属性 name 和 class:name 指定 appender 名称,class 指定 appender 的全限定名 +- ``对日志进行格式化 + - ``定义日志的具体输出格式 + - ``编码方式 ```xml @@ -120,12 +116,20 @@ logback是一个开源的日志组件,是log4j的作者开发的用来替代lo ${CONSOLE_LOG_PATTERN} ${ENCODING} + + ${logging.level} + + + ERROR + DENY + ``` 输出模式说明 -* 输出模式:%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%msg%n -* 输出模式解释:时间日期格式-调用的线程-日志界别-调用对象-日志信息-换行 + +- 输出模式:%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%msg%n +- 输出模式解释:时间日期格式-调用的线程-日志界别-调用对象-日志信息-换行 ``` %d{HH:mm:ss.SSS}:日志输出时间(red) @@ -136,10 +140,14 @@ logback是一个开源的日志组件,是log4j的作者开发的用来替代lo %n:平台的换行符 ``` +过滤器说明 +* filter可以过滤指定级别的日志进行打印 + ### FileAppender -* ``表示日志文件的位置,如果上级目录不存在会自动创建,没有默认值。\ -* ``默认 true,日志被追加到文件结尾,如果是 false,服务重启后清空现存文件。 +- ``表示日志文件的位置,如果上级目录不存在会自动创建,没有默认值。\ +- ``默认 true,日志被追加到文件结尾,如果是 false,服务重启后清空现存文件。 + ```xml @@ -153,14 +161,15 @@ logback是一个开源的日志组件,是log4j的作者开发的用来替代lo ``` ### RollingFileAppender + 表示滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将旧日志备份到其他文件 -* ``是``的子节点,用来定义滚动策略。 +- ``是``的子节点,用来定义滚动策略。 -* TimeBasedRollingPolicy:最常用的滚动策略,根据时间来制定滚动策略。 +- TimeBasedRollingPolicy:最常用的滚动策略,根据时间来制定滚动策略。 -* ``:包含文件名及转换符, “%d”可以包含指定的时间格式,如:%d{yyyy-MM-dd}。如果直接使用 %d,默认格式是 yyyy-MM-dd。 -* ``:可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件。假设设置每个月滚动,且``是6,则只保存最近6个月的文件,删除之前的旧文件。注意,删除旧文件是,那些为了归档而创建的目录也会被删除。 +- ``:包含文件名及转换符, “%d”可以包含指定的时间格式,如:%d{yyyy-MM-dd}。如果直接使用 %d,默认格式是 yyyy-MM-dd。 +- ``:可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件。假设设置每个月滚动,且``是 6,则只保存最近 6 个月的文件,删除之前的旧文件。注意,删除旧文件是,那些为了归档而创建的目录也会被删除。 ```xml @@ -178,21 +187,92 @@ logback是一个开源的日志组件,是log4j的作者开发的用来替代lo 15 + + ${log_path}/userlog-%d{yyyyMMddHHmm}-%i.log + 300KB + 60 + ``` -* 放在``的子节点的位置,基于实践策略的触发滚动策略``设置触发滚动条件:单个文件大于100M时生成新的文件 +- 放在``的子节点的位置,基于实践策略的触发滚动策略``设置触发滚动条件:单个文件大于 100M 时生成新的文件 + +### AsyncAppender + +``` + + + + +``` + +### SiftingAppender +之前在介绍常用appender时已经记录过了,SiftingAppender可用于根据给定的运行时属性来分离(或筛选)日志记录。 + +比如:可以按照业务功能生成独立的日志文件、按照用户会话id为每个用户生成独立的日志文件等。 + +按照业务功能生成独立的日志文件 +上面我们通过为每个业务类配置的方式,实现了按照业务功能生成独立的日志文件,下面我们使用SiftingAppender来实现此功能,代码如下: + +修改下UserService: +```java +@Service +public class UserService { + + private static final Logger logger = LoggerFactory.getLogger(UserService.class); + + public void testLogger() throws InterruptedException { + for (int i = 0; i < 10; i++) { + Thread.sleep(2); + MDC.put("logKey","userLog"); // logKey设置值后在logback.xml中使用 + logger.info("user logger!" + i); + } + } +``` + +```xml + + + + + logKey + general + + + + + ${log_path}/db/${logKey}.log + + ${log_path}/db/${logKey}.%d{yyyyMMddHHmm}.log + 60 + + + %msg%n + + + + + + + + +``` ### logger ``可以是``的子节点,用来设置日志打印级别、指定`` +- name:用来指定受此 logger 约束的某一个包或者具体的某一个. +- level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF。默认继承上级的级别。logger 日志级别。级别包括:TRACE < DEBUG < INFO < WARN < ERROR,定义于 ch.qos.logback.classic.Level 类中。 +- ``可以包含零个或多个``元素,标识这个 appender 将会添加到这个 logger -* name:用来指定受此logger约束的某一个包或者具体的某一个. -* level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF。默认继承上级的级别 -* logger日志级别。级别包括:TRACE < DEBUG < INFO < WARN < ERROR,定义于ch.qos.logback.classic.Level类中。如果logger没有被分配级别,name它将从有被分配级别的最近的父类那里继承级别,root logger默认级别是DEBUG。 -* ``可以包含零个或多个``元素,标识这个appender将会添加到这个logger + +logger继承问题 +* 根据name进行继承。name=com.ykl 继承了name=com继承了root +* 继承上级日志级别。logger 没有被分配级别,name 它将从有被分配级别的最近的父类那里继承级别,root logger 默认级别是 DEBUG。 +* 向上传递日志信息。类似于拦截器,拦截到消息后是否会放回additivity="false"表示不放回。additivity="true"表示放回。root能够截取所有的消息。 ```xml @@ -202,7 +282,23 @@ logback是一个开源的日志组件,是log4j的作者开发的用来替代lo ``` -* logger的取得:通过org.slf4j.LoggerFactory的getLogger()方法取得。getLogger(Class obj)方式是通过传入一个类的形式来进行logger对象和类的绑定;getLogger(String name)方式是通过传入一个contextName的形式来指定一个logger,用同一个名字调用该方法获取的永远都是同一个logger对象的引用。 +- logger 的取得:通过 org.slf4j.LoggerFactory 的 getLogger()方法取得。getLogger(Class obj)方式是通过传入一个类的形式来进行 logger 对象和类的绑定;getLogger(String name)方式是通过传入一个 contextName 的形式来指定一个 logger,用同一个名字调用该方法获取的永远都是同一个 logger 对象的引用。 + +### root + +配置默认的日志打印 + +也是元素,但是它是根loger。只有一个level属性,应为已经被命名为"root". +level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,不能设置为INHERITED或者同义词NULL。默认是DEBUG。 + +* 没有设置addtivity,默认为true,将此loger的打印信息向上级传递; + +```xml + + + +``` + ## 3 配置文件 ### 配置文件实例 @@ -424,4 +520,4 @@ logback是一个开源的日志组件,是log4j的作者开发的用来替代lo -``` \ No newline at end of file +``` diff --git a/Java基础教程/Java语言基础/12 Java注解.md b/Java基础教程/Java语言基础/12 Java注解.md index 31a58058..0b838460 100644 --- a/Java基础教程/Java语言基础/12 Java注解.md +++ b/Java基础教程/Java语言基础/12 Java注解.md @@ -6,17 +6,21 @@ - [原理](#原理) - [2 注解使用](#2-注解使用) - [注解的实现原理](#注解的实现原理) - - [元注解](#元注解) - [注解的使用步骤](#注解的使用步骤) - [属性的数据类型及特别的属性:value和数组](#属性的数据类型及特别的属性value和数组) - [总结](#总结) - - [3 JDK中的标准注解](#3-jdk中的标准注解) + - [3 元注解](#3-元注解) + - [@Target](#target) + - [@Retention](#retention) + - [@Documented](#documented) + - [@Inherited](#inherited) + - [4 JDK中的标准注解](#4-jdk中的标准注解) - [@Override](#override) - [@Deprecated](#deprecated) - [@SuppressWarnings](#suppresswarnings) - [@SafeVarargs](#safevarargs) - [@FunctionalInterface](#functionalinterface) - - [4 Spring框架下一个注解的实现](#4-spring框架下一个注解的实现) + - [5 Spring框架下一个注解的实现](#5-spring框架下一个注解的实现) - [登录校验——定义注解](#登录校验定义注解) - [登录校验——使用注解](#登录校验使用注解) - [登录校验——实现注解](#登录校验实现注解) @@ -121,16 +125,6 @@ public @interface MyAnnotation{ -### 元注解 - -加在注解上的注解。 - -* @Documented:用于制作文档 -* @Target:加在注解上,限定该注解的使用位置。`@Target(ElementType.Field,ElementType.Method)`。它指明了它所修饰的注解使用的范围 如果自定义的注解为含有@Target元注解修饰,那么默认可以是在(除类型参数之外的)任何项之上使用,若有@Target元注解修饰那么根据Value(ElementType枚举常量)的指定的目标进行规定。 -* @Retention:注解的保留策略`@Retention(RetentionPolicy.CLASS/RetentionPolicy.RUNTIME/RetentionPolicy.SOURCE)`。分别对应java编译执行过程的三个阶段。源代码阶段.java-->编译后的字节码阶段.class-->JVM运行时阶段. - * 一般来说,普通开发者使用注解的时机都是运行时,比如反射读取注解(也有类似Lombok这类编译期注解)。既然反射是运行时调用,那就要求注解的信息必须保留到虚拟机将.class文件加载到内存为止。如果你需要反射读取注解,却把保留策略设置为RetentionPolicy.SOURCE、RetentionPolicy.CLASS -* @Inherited:被该元注解修饰的自定义注解再使用后会自动继承,如果使用了该自定义注解去修饰一个class那么这个注解也会作用于该class的子类。就是说如果某个类使用了被@Inherited修饰的注解,则其子类将会自动具有该注释。@Inherited annotation类型是被标注过的class的子类所继承。类并不从它所实现的接口继承annotation,方法并不从它所重载的方法继承annotation。 - ### 注解的使用步骤 @@ -276,7 +270,38 @@ public class Demo { ![](image/2022-07-12-10-04-38.png) -## 3 JDK中的标准注解 +## 3 元注解 + +加在注解上的注解。 + +### @Target + +加在注解上,限定该注解的使用位置,它指明了它所修饰的注解使用的范围。@Target元注解修饰那么根据Value(ElementType枚举常量)的指定的目标进行规定。 + +* @Target(ElementType.TYPE) //接口、类、枚举 +* @Target(ElementType.FIELD) //字段、枚举的常量 +* @Target(ElementType.METHOD) //方法 +* @Target(ElementType.PARAMETER) //方法参数 +* @Target(ElementType.CONSTRUCTOR) //构造函数 +* @Target(ElementType.LOCAL_VARIABLE)//局部变量 +* @Target(ElementType.ANNOTATION_TYPE)//注解 +* @Target(ElementType.PACKAGE) ///包 + +### @Retention +注解的保留策略`@Retention(RetentionPolicy.CLASS/RetentionPolicy.RUNTIME/RetentionPolicy.SOURCE)`。分别对应java编译执行过程的三个阶段。源代码阶段.java-->编译后的字节码阶段.class-->JVM运行时阶段. + * 一般来说,普通开发者使用注解的时机都是运行时,比如反射读取注解(也有类似Lombok这类编译期注解)。既然反射是运行时调用,那就要求注解的信息必须保留到虚拟机将.class文件加载到内存为止。如果你需要反射读取注解,却把保留策略设置为RetentionPolicy.SOURCE、RetentionPolicy.CLASS + + + +### @Documented + +用于制作文档 + +### @Inherited + +被该元注解修饰的自定义注解再使用后会自动继承,如果使用了该自定义注解去修饰一个class那么这个注解也会作用于该class的子类。就是说如果某个类使用了被@Inherited修饰的注解,则其子类将会自动具有该注释。@Inherited annotation类型是被标注过的class的子类所继承。类并不从它所实现的接口继承annotation,方法并不从它所重载的方法继承annotation。 + +## 4 JDK中的标准注解 ### @Override @@ -336,7 +361,7 @@ public class Demo { @FunctionalInterface作用就是用来指定某一个接口必须是函数式接口的,所以@FunctionalInterface只能修饰接口。 -## 4 Spring框架下一个注解的实现 +## 5 Spring框架下一个注解的实现 > 定义注解、使用注解、实现注解。和定义接口、使用接口、实现接口。与OpenApi中定义服务、使用服务、实现服务。具有相同的含义。 diff --git a/Java基础教程/Java语言基础/13 lambda表达式.md b/Java基础教程/Java语言基础/13 lambda表达式.md index e69de29b..e6e50dfe 100644 --- a/Java基础教程/Java语言基础/13 lambda表达式.md +++ b/Java基础教程/Java语言基础/13 lambda表达式.md @@ -0,0 +1,387 @@ +## lambda表达式概述 + +### 简介 + +lambda运行将函数作为一个方法的参数,也就是函数作为参数传递到方法中。使用lambda表达式可以让代码更加简洁。 + +Lambda表达式的使用场景:用以简化接口实现。 + +### 接口实现 +* 设计接口的实现类 +``` +Interface B{} +Class A implements B{ + +} +new A(); +``` +* 使用匿名内部类 +``` +//直接创建匿名内部类。 +Interface B{} +new B(){ + +} +``` +* lambda表达式 +``` +//使用lambda表达式实现接口 +Interface B{} +Test test = () -> { + System.out.println("test"); +}; +test.test(); +``` + +### 注意事项 + +这⾥类似于局部内部类、匿名内部类,依然存在闭包的问题。 + +如果在lambda表达式中,使用到了局部变量,那么这个局部变量会被隐式的声明为 final。是⼀个常量,不能修改值。 + +## 2 函数式接口 +### 函数式接口 +lambda表达式,只能实现函数式接口。 + +函数式接口:如果说,⼀个接口中,要求实现类必须实现的抽象方法,有且只有⼀个! + +```java +//有且只有一个实现类必须要实现的抽象方法,所以是函数式接口 +interface Test{ + public void test(); +} +``` + +lambda表达式毕竟只是⼀个匿名方法。当实现的接口中的方法过多或者多少的时候,lambda表达式都是不适用的。 + +### @FunctionalInterface +* 编译时检查的注解。 + + +是⼀个注解,用在接口之前,判断这个接口是否是⼀个函数式接口。 如果是函数式接口,没有任何问题。如果不是函数式接口,则会报错。功能类似于 @Override。 + +```java +@FunctionalInterface +interface Test{ + public void test(); +} +``` + + +## 3 Lambda表达式的语法 +使用lambda表带是实现一个函数式接口 +### 基础语法 + +不需要关注参数类型或者返回值类型。 + +```java +(参数1,参数2,…) -> { +方法体 +}; +``` +* 参数部分:方法的参数列表,要求和实现的接口中的方法参数部分⼀致,包括参数的数量和类型。 +* 方法体部分 : 方法的实现部分,如果接口中定义的方法有返回值,则在实现的时候,注意返回值的返回。 +* -> : 分隔参数部分和方法体部分。 + + +``` +// 1. 不需要参数,返回值为 2 +() -> 2 +// 2. 接收一个参数(数字类型),返回其2倍的值 +x -> 2 * x +// 3. 接受2个参数(数字),并返回他们的和 +(x, y) -> x + y +// 4. 接收2个int型整数,返回他们的乘积 +(int x, int y) -> x * y//可以加类型 +// 5. 接受一个 string 对象,并在控制台打印,不返回任何值(看起来像是返回void) +(String s) -> System.out.print(s) +``` + +```java +package test; + +/** + * @author: Mercury + * Date: 2022/3/20 + * Time: 17:48 + * Description:Lambda表达式 + * Version:1.0 + */ +public class Test04 { + public static void main(String[] args) { + //使用lambda表达式实现接口 + //有参+返回值 + Test test = (name,age) -> { + System.out.println(name+age+"岁了!"); + return age + 1; + }; + int age = test.test("小新",18); + System.out.println(age); + + } +} + +//有参 有返回值 +interface Test{ + public int test(String name,int age); +} +``` + + +### 语法进阶 + +1. 参数的类型可以省略不写。由于在接口的方法中,已经定义了每⼀个参数的类型是什么。而且在使用lambda表达式实现接口的时候,必须要保证参数的数量和类 型需要和接口中的方法保持⼀致。要省略, 每⼀个参数的类型都必须省略不写。绝对不能出现,有的参数类型省略了,有的参数类型没有省略。 + +```java + //有参+返回值 + Test test = (name,age) -> { + System.out.println(name+age+"岁了!"); + return age + 1; + }; + int age = test.test("小新",18); + System.out.println(age); +``` + +2. 参数的小括号可以省略不写。如果方法的参数列表中的参数数量 有且只有⼀个,此时,参数列表的小括号是可以省略不写的。 + +```java + //一个参数 + Test test = name -> { + System.out.println(name+"test"); + }; + test.test("小新"); +``` + +3. return可以省略不写。如果⼀个方法中唯⼀的⼀条语句是⼀个返回语句, 此时在省略掉大括号的同时, 也必须省略掉return。 + +```java +Test test = (a,b) -> a+b; +``` + +## 4 函数引用 + +### 函数引用的概念 +lambda表达式是为了简化接口的实现的。在lambda表达式中,不应该出现比较复杂的逻辑。如果在lambda表达式中出现了过于复杂的逻辑,会对程序的可读性造成非常大的影响。如果在lambda表达式中需要处理的逻辑比较复杂,⼀般情况会单独的写⼀个方法。在lambda表达式中直接引用这个方法即可 + + +函数引用:引用⼀个已经存在的方法,使其替代lambda表达式完成接口的实现 + + +### 静态方法的引用 +``` +类::静态方法 +``` +* 引用方法后面,不要添加小括号。 +* 引用方法、参数和返回值,必须要跟接口中定义的一致。 + +```java +package test; + +/** + * @author: Mercury + * Date: 2022/3/20 + * Time: 18:17 + * Description:lambda表达式静态方法引用 + * Version:1.0 + */ +public class Test05 { + public static void main(String[] args) { + //实现多个参数,一个返回值的接口 + //对一个静态方法的引用,语法:类::静态方法 + Test1 test1 = Calculator::calculate; + System.out.println(test1.test(4,5)); + } +} + +class Calculator{ + public static int calculate(int a,int b ){ + // 稍微复杂的逻辑:计算a和b的差值的绝对值 + if (a > b) { + return a - b; + } + return b - a; + } +} + +interface Test1{ + int test(int a,int b); +} +``` + + +### 非静态方法的引用 + +``` +对象::非静态方法 +``` +* 在引用的方法后⾯,不要添加小括号。 +* 引用的这个方法, 参数(数量、类型) 和 返回值, 必须要跟接口中定义的⼀致。 + +``` +package test; + +/** + * @author: Mercury + * Date: 2022/3/21 + * Time: 8:14 + * Description:lambda表达式对非静态方法的引用 + * Version:1.0 + */ +public class Test06 { + public static void main(String[] args) { + //对非静态方法的引用,需要使用对象来完成 + Test2 test2 = new Calculator()::calculate; + System.out.println(test2.calculate(2, 3)); + } + private static class Calculator{ + public int calculate(int a, int b) { + return a > b ? a - b : b - a; + } + } +} +interface Test2{ + int calculate(int a,int b); +} +``` + +### 构造方法的引用 + +使用场景 + +如果某⼀个函数式接口中定义的方法,仅仅是为了得到⼀个类的对象。此时我们就可以使用构造方法的引用,简化这个方法的实现。 + +``` +语法:类名::new +``` + +注意事项:可以通过接口中的方法的参数, 区分引用不同的构造方法。 + +```java +package com.cq.test; + +/** + * @author: Mercury + * Date: 2022/4/27 + * Time: 10:31 + * Description:lambda构造方法的引用 + * Version:1.0 + */ +public class Test { + private static class Dog{ + String name; + int age; + //无参构造 + public Dog(){ + System.out.println("一个Dog对象通过无参构造被实例化了"); + } + //有参构造 + public Dog(String name,int age){ + System.out.println("一个Dog对象通过有参构造被实例化了"); + this.name = name; + this.age = age; + } + } + //定义一个函数式接口,用以获取无参的对象 + @FunctionalInterface + private interface GetDog{ + //若此方法仅仅是为了获得一个Dog对象,而且通过无参构造去获取一个Dog对象作为返回值 + Dog test(); + } + + //定义一个函数式接口,用以获取有参的对象 + @FunctionalInterface + private interface GetDogWithParameter{ + //若此方法仅仅是为了获得一个Dog对象,而且通过有参构造去获取一个Dog对象作为返回值 + Dog test(String name,int age); + } + + // 测试 + public static void main(String[] args) { + //lambda表达式实现接口 + GetDog lm = Dog::new; //引用到Dog类中的无参构造方法,获取到一个Dog对象 + Dog dog = lm.test(); + System.out.println("修狗的名字:"+dog.name+" 修狗的年龄:"+dog.age); //修狗的名字:null 修狗的年龄:0 + GetDogWithParameter lm2 = Dog::new;//引用到Dog类中的有参构造,来获取一个Dog对象 + Dog dog1 = lm2.test("萨摩耶",2); + System.out.println("修狗的名字:"+dog1.name+" 修狗的年龄:"+dog1.age);//修狗的名字:萨摩耶 修狗的年龄:2 + + } +} +``` + +## 4 集合中的使用 + +### forEach( )方法演示: +```java +public static void main(String[] args) { + ArrayListlist=new ArrayList<>(); + list.add("a"); + list.add("bc"); + list.add("def"); + list.add("hello"); + + //写法1:(不用Lambda表达式) + list.forEach(new Consumer() { + @Override + public void accept(String s) { + System.out.println(s); + } + }); + + //写法2:(用Lambda表达式) + list.forEach(s-> System.out.println(s)); + //效果和写法1一样 + } +``` + +### sort()方法的演示 + +```java +public static void main(String[] args) { + ArrayListlist=new ArrayList<>(); + list.add("hh"); + list.add("hi"); + list.add("def"); + list.add("abc"); + + //写法1:(不用Lambda表达式) + list.sort(new Comparator() { + @Override + public int compare(String o1,String o2) { + return o1.compareTo(o2); + } + }); + list.forEach(s-> System.out.println(s)); + + System.out.println("======分割线======"); + + //写法2:(用Lambda表达式) + list.sort(((o1, o2) -> o1.compareTo(o2))); + //效果和写法1一样 + list.forEach(s-> System.out.println(s)); + }//Lambda表达式可以大大缩短代码量,但是相应的可读性比较差 +``` + +### HashMap 的 forEach() +``` +public static void main(String[] args) { + HashMapmap=new HashMap<>(); + map.put(1,"hello"); + map.put(2,"I"); + map.put(3,"love"); + map.put(4,"china"); + + //法一:(不用Lambda) + map.forEach(new BiConsumer() { + @Override + public void accept(Integer integer, String s) { + System.out.println("key:"+integer+"value:"+s); + } + }); + + System.out.println("======分割线======"); + + //法二:(用Lambda) + map.forEach((key,value)-> System.out.println("key:"+key+"value:"+value)); + } +``` \ No newline at end of file diff --git a/Spring/Springboot/01 内容简介.md b/Spring/Springboot/01 内容简介.md index ceabb35c..51f94bde 100644 --- a/Spring/Springboot/01 内容简介.md +++ b/Spring/Springboot/01 内容简介.md @@ -246,7 +246,7 @@ public class Bootstrap { ## 5 自动配置原理 ### maven继承关系 - +* 在parent中管理版本信息 ```xml 依赖管理 diff --git a/Spring/Springboot/02 配置文件.md b/Spring/Springboot/02 创建项目.md similarity index 100% rename from Spring/Springboot/02 配置文件.md rename to Spring/Springboot/02 创建项目.md diff --git a/Spring/Springboot/2配置.md b/Spring/Springboot/03 配置文件.md similarity index 59% rename from Spring/Springboot/2配置.md rename to Spring/Springboot/03 配置文件.md index 6e822bb0..e70f4cc4 100644 --- a/Spring/Springboot/2配置.md +++ b/Spring/Springboot/03 配置文件.md @@ -1,23 +1,14 @@ -## 1 配置基础 +## 1 properties配置基础 -### 默认配置文件 +### properties默认配置文件 用于配置容器端口名、数据库链接信息、日志级别。pom是项目编程的配置,properties是软件部署的配置。 + +移除特殊字符、全小写。在环境变量中通过小写转换与.替换_来映射配置文件中的内容,比如:环境变量SPRING_JPA_DATABASEPLATFORM=mysql的配置会产生与在配置文件中设置spring.jpa.databaseplatform=mysql一样的效果。 + ``` src/main/resources/application.properties ``` -### yaml配置文件实例 -``` -environments: - dev: - url: http://dev.bar.com - name: Developer Setup - prod: - url: http://foo.bar.com - name: My Cool App -``` - -### 等价的properties配置文件 ``` environments.dev.url=http://dev.bar.com environments.dev.name=Developer Setup @@ -25,91 +16,11 @@ environments.prod.url=http://foo.bar.com environments.prod.name=My Cool App ``` -### yaml的自定义参数 -* 定义自定义的参数 -``` -book.name=SpringCloudInAction -book.author=ZhaiYongchao -``` -* 通过占位符的方式加载自定义的参数 - -``` -@Component -public class Book { - - @Value("${book.name}") - private String name; - @Value("${book.author}") - private String author; - - // 省略getter和setter -} -``` - -* 通过SpEL表达式加载自定义参数 - -''' -#{...} -''' - -### 使用随机数配置 -${random}的配置方式主要有一下几种,读者可作为参考使用。 - -``` -# 随机字符串 -com.didispace.blog.value=${random.value} -# 随机int -com.didispace.blog.number=${random.int} -# 随机long -com.didispace.blog.bignumber=${random.long} -# 10以内的随机数 -com.didispace.blog.test1=${random.int(10)} -# 10-20的随机数 -com.didispace.blog.test2=${random.int[10,20]} -``` - - -### 通过命令行配置 -在启动java应用是,添加配置参数 -``` -java -jar xxx.jar --server.port=8888 -``` - - -## 2 多环境配置 - -### 配置方法 -对于多环境的配置,各种项目构建工具或是框架的基本思路是一致的,通过配置多份不同环境的配置文件,再通过打包命令指定需要打包的内容之后进行区分打包。 - -在Spring Boot中多环境配置文件名需要满足application-{profile}.properties的格式,其中{profile}对应你的环境标识,比如: - -* application-dev.properties:开发环境 -* application-test.properties:测试环境 -* application-prod.properties:生产环境 - -### 配置加载顺序 - -1. 命令行中传入的参数。 -1. SPRING_APPLICATION_JSON中的属性。SPRING_APPLICATION_JSON是以JSON格式配置在系统环境变量中的内容。 -1. java:comp/env中的JNDI属性。 -1. Java的系统属性,可以通过System.getProperties()获得的内容。 -1. 操作系统的环境变量 -1. 通过random.*配置的随机属性 -1. 位于当前应用jar包之外,针对不同{profile}环境的配置文件内容,例如:application-{profile}.properties或是YAML定义的配置文件 -1. 位于当前应用jar包之内,针对不同{profile}环境的配置文件内容,例如:application-{profile}.properties或是YAML定义的配置文件 -1. 位于当前应用jar包之外的application.properties和YAML配置内容 -1. 位于当前应用jar包之内的application.properties和YAML配置内容 -1. 在@Configuration注解修改的类中,通过@PropertySource注解定义的属性 -1. 应用默认属性,使用SpringApplication.setDefaultProperties定义的内容1. - -## 3 配置文件属性绑定 - -### Spring Boot 2.0 新特性 -* 移除特殊字符 -* 全小写 ### 列表类型 > 必须使用连续下标索引进行配置。 + + * properties中使用[]在定位列表类型 ``` pring.my-example.url[0]=http://example.com @@ -156,39 +67,179 @@ spring: hello: world ``` -## 4 环境属性绑定 -### 简单类型 -在环境变量中通过小写转换与.替换_来映射配置文件中的内容,比如:环境变量SPRING_JPA_DATABASEPLATFORM=mysql的配置会产生与在配置文件中设置spring.jpa.databaseplatform=mysql一样的效果。 -### List类型 -由于环境变量中无法使用[和]符号,所以使用_来替代。任何由下划线包围的数字都会被认为是[]的数组形式。 +### 使用随机数配置 +`${random}`的配置方式主要有一下几种,读者可作为参考使用。 + +``` +# 随机字符串 +com.didispace.blog.value=${random.value} +# 随机int +com.didispace.blog.number=${random.int} +# 随机long +com.didispace.blog.bignumber=${random.long} +# 10以内的随机数 +com.didispace.blog.test1=${random.int(10)} +# 10-20的随机数 +com.didispace.blog.test2=${random.int[10,20]} +``` + + +## 2 yaml配置文件 +### yaml基本语法 + +* key: value;kv之间有空格 +* 大小写敏感 +* 使用缩进表示层级关系 +* 缩进不允许使用tab,只允许空格 +* 缩进的空格数不重要,只要相同层级的元素左对齐即可 +* '#'表示注释 +* 字符串无需加引号,如果要加,''与""表示字符串内容 会被 转义/不转义 +``` +environments: + dev: + url: http://dev.bar.com + name: Developer Setup + prod: + url: http://foo.bar.com + name: My Cool App +``` + +### yaml基本类型 +* 字面量:单个的、不可再分的值。date、boolean、string、number、null +``` +k: v +``` +* 对象:键值对的集合。map、hash、set、object +``` +行内写法: k: {k1:v1,k2:v2,k3:v3} +#或 +k: + k1: v1 + k2: v2 + k3: v3 +``` +* 数组:一组按次序排列的值。array、list、queue +``` +行内写法: k: [v1,v2,v3] +#或者 +k: + - v1 + - v2 + - v3 +``` + +### yaml的实例 +``` +@Data +public class Person { + + private String userName; + private Boolean boss; + private Date birth; + private Integer age; + private Pet pet; + private String[] interests; + private List animal; + private Map score; + private Set salarys; + private Map> allPets; +} + +@Data +public class Pet { + private String name; + private Double weight; +} + +``` +对应的yaml配置 + +``` +# yaml表示以上对象 +person: + userName: zhangsan + boss: false + birth: 2019/12/12 20:12:33 + age: 18 + pet: + name: tomcat + weight: 23.4 + interests: [篮球,游泳] + animal: + - jerry + - mario + score: + english: + first: 30 + second: 40 + third: 50 + math: [131,140,148] + chinese: {first: 128,second: 136} + salarys: [3999,4999.98,5999.99] + allPets: + sick: + - {name: tom} + - {name: jerry,weight: 47} + health: [{name: mario,weight: 47}] +``` + + +## 3 其他配置方式 +### 系统环境变量 + +* 列表形式:由于环境变量中无法使用[和]符号,所以使用_来替代。任何由下划线包围的数字都会被认为是[]的数组形式。 ``` MY_FOO_1_ = my.foo[1] MY_FOO_1_BAR = my.foo[1].bar MY_FOO_1_2_ = my.foo[1][2] ``` - -## 5 系统属性绑定 - -### 简单类型 - -系统属性与文件配置中的类似,都以移除特殊字符并转化小写后实现绑定 - -### list类型 - -系统属性的绑定也与文件属性的绑定类似,通过[]来标示,比如: +### 通过命令行配置 +在启动java应用是,添加配置参数。系统属性的绑定也与文件属性的绑定类似,通过[]来标示,同样的,他也支持逗号分割的方式 ``` +java -jar xxx.jar --server.port=8888 + -D"spring.my-example.url[0]=http://example.com" -D"spring.my-example.url[1]=http://spring.io" -``` -同样的,他也支持逗号分割的方式,比如: -``` + -Dspring.my-example.url=http://example.com,http://spring.io + ``` -## 6 属性读取 + + +## 4 多环境配置 + +### 配置方法 +对于多环境的配置,各种项目构建工具或是框架的基本思路是一致的,通过配置多份不同环境的配置文件,再通过打包命令指定需要打包的内容之后进行区分打包。 + +在Spring Boot中多环境配置文件名需要满足application-{profile}.properties的格式,其中{profile}对应你的环境标识,比如: + +* application-dev.properties:开发环境 +* application-test.properties:测试环境 +* application-prod.properties:生产环境 + +### 配置加载顺序 + +1. 命令行中传入的参数。 +1. SPRING_APPLICATION_JSON中的属性。SPRING_APPLICATION_JSON是以JSON格式配置在系统环境变量中的内容。 +1. java:comp/env中的JNDI属性。 +1. Java的系统属性,可以通过System.getProperties()获得的内容。 +1. 操作系统的环境变量 +1. 通过random.*配置的随机属性 +1. 位于当前应用jar包之外,针对不同{profile}环境的配置文件内容,例如:application-{profile}.properties或是YAML定义的配置文件 +1. 位于当前应用jar包之内,针对不同{profile}环境的配置文件内容,例如:application-{profile}.properties或是YAML定义的配置文件 +1. 位于当前应用jar包之外的application.properties和YAML配置内容 +1. 位于当前应用jar包之内的application.properties和YAML配置内容 +1. 在@Configuration注解修改的类中,通过@PropertySource注解定义的属性 +1. 应用默认属性,使用SpringApplication.setDefaultProperties定义的内容1. + +## 5 自定义配置文件/加载配置文件/属性绑定 +### 读取规则 + + 将配置文件中的值引入到java程序中。 在Spring应用程序的environment中读取属性的时候,每个属性的唯一名称符合如下规则: @@ -204,9 +255,57 @@ MY_FOO_1_2_ = my.foo[1][2] this.environment.containsProperty("spring.jpa.database-platform") ``` -## 7 新的绑定API +### 引入依赖 -简单类型 +```xml + + org.springframework.boot + spring-boot-configuration-processor + true + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + org.springframework.boot + spring-boot-configuration-processor + + + + + + +``` + +### @Value +* 通过占位符的方式加载自定义的参数 + +``` +@Component +public class Book { + + @Value("${book.name}") + private String name; + @Value("${book.author}") + private String author; + + // 省略getter和setter +} +``` +* @Value支持的表达式格式 +``` +#{...} +${...} +``` + + +### @ConfigurationProperties 假设在propertes配置中有这样一个配置: ``` diff --git a/Spring/Springboot/03 基本注解.md b/Spring/Springboot/04 基本注解.md similarity index 76% rename from Spring/Springboot/03 基本注解.md rename to Spring/Springboot/04 基本注解.md index 84245706..b926eb38 100644 --- a/Spring/Springboot/03 基本注解.md +++ b/Spring/Springboot/04 基本注解.md @@ -1,5 +1,19 @@ ## 注解说明 +注解体系 +1. 元注解@Rentention @Docemented,@Inherited,@Target +2. JDK标准注解 +3. Spring标准注解@Bean @Component @Serivce,@Controller,@Configuration,@Import,@Autowire +4. springboot补充注解 +### @SpringbootConfiguration + +``` +@SpringBootConfiguration springboot启动 +@EnableAutoConfiguration 通过properties自动加载 +@ComponentScan("com.atguigu.boot")扫描范围 +``` + +springboot项目中的启动注解。 ### @Configuration&@Bean 1. 配置类本身也是组件,相当于将组件注册到Spring当中。即把类的对象交给Spring管理。 @@ -10,10 +24,10 @@ 1. 配置类实用@Bean标注方法上给容器注册组件,默认也是单实例。id默认为方法名。可以通过参数指定 2. 外部类可以从Spring的容器中取出在Configuration类中注册的实例。而且都是单实例对象。 +``` @Component @Controller @Service @Repository 都是以前的用法 -@ComponetScan - +``` ### @Import @@ -23,14 +37,12 @@ ### @conditional 1. 条件装配。满足Conditional指定的条件,则进行组件注入。 -2. 这里的条件可以是多种形式 +![](image/2022-11-12-15-49-46.png) -@ConditionalOnBean(name="bean")当容器中存在指定名称的容器的时候,才会进行注册。 +* @ConditionalOnBean(name="bean")当容器中存在指定名称的容器的时候,才会进行注册。 ``` @ConditionalOnBean(name="") - - ``` ### @ImportResource diff --git a/Spring/Springboot/image/2022-11-12-15-49-46.png b/Spring/Springboot/image/2022-11-12-15-49-46.png new file mode 100644 index 0000000000000000000000000000000000000000..cb015643acbfe2a964343605f3c6f81049492210 GIT binary patch literal 102623 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

)k?a&zN#XYrD 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 literal 0 HcmV?d00001 diff --git a/maven/maven源码/code/.gitignore b/maven/maven源码/code/.gitignore new file mode 100644 index 00000000..549e00a2 --- /dev/null +++ b/maven/maven源码/code/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/maven/maven源码/code/.mvn/wrapper/maven-wrapper.jar b/maven/maven源码/code/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..c1dd12f17644411d6e840bd5a10c6ecda0175f18 GIT binary patch literal 58727 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%0ANsA|A3-jj|r`KAo%oTajX3>^E` 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 YM{}PByk10KD_nuQ4E7Du?}+~TKh4V)`~Uy| literal 0 HcmV?d00001 diff --git a/maven/maven源码/code/.mvn/wrapper/maven-wrapper.properties b/maven/maven源码/code/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 00000000..b74bf7fc --- /dev/null +++ b/maven/maven源码/code/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,2 @@ +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.6/apache-maven-3.8.6-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar diff --git a/maven/maven源码/code/mvnw b/maven/maven源码/code/mvnw new file mode 100755 index 00000000..8a8fb228 --- /dev/null +++ b/maven/maven源码/code/mvnw @@ -0,0 +1,316 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /usr/local/etc/mavenrc ] ; then + . /usr/local/etc/mavenrc + fi + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="`/usr/libexec/java_home`" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`\\unset -f command; \\command -v java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +BASE_DIR=`find_maven_basedir "$(pwd)"` +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." + fi + if [ -n "$MVNW_REPOURL" ]; then + jarUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + else + jarUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + fi + while IFS="=" read key value; do + case "$key" in (wrapperUrl) jarUrl="$value"; break ;; + esac + done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $jarUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"` + fi + + if command -v wget > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + else + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + fi + elif command -v curl > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl -o "$wrapperJarPath" "$jarUrl" -f + else + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + fi + + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaClass=`cygpath --path --windows "$javaClass"` + fi + if [ -e "$javaClass" ]; then + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + $MAVEN_DEBUG_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" \ + "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/maven/maven源码/code/mvnw.cmd b/maven/maven源码/code/mvnw.cmd new file mode 100644 index 00000000..1d8ab018 --- /dev/null +++ b/maven/maven源码/code/mvnw.cmd @@ -0,0 +1,188 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* +if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET DOWNLOAD_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %DOWNLOAD_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% ^ + %JVM_CONFIG_MAVEN_PROPS% ^ + %MAVEN_OPTS% ^ + %MAVEN_DEBUG_OPTS% ^ + -classpath %WRAPPER_JAR% ^ + "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ + %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" +if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%"=="on" pause + +if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% + +cmd /C exit /B %ERROR_CODE% diff --git a/maven/maven源码/code/pom.xml b/maven/maven源码/code/pom.xml new file mode 100644 index 00000000..e10553af --- /dev/null +++ b/maven/maven源码/code/pom.xml @@ -0,0 +1,47 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.7.5 + + + com.ykl + code + 0.0.1-SNAPSHOT + code + code + + 1.8 + + + + org.springframework.boot + spring-boot-starter + + + + org.springframework.boot + spring-boot-starter-test + test + + + + org.springframework.boot + spring-boot-starter-tomcat + compile + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + diff --git a/maven/maven源码/code/src/main/java/com/ykl/code/CodeApplication.java b/maven/maven源码/code/src/main/java/com/ykl/code/CodeApplication.java new file mode 100644 index 00000000..9178c046 --- /dev/null +++ b/maven/maven源码/code/src/main/java/com/ykl/code/CodeApplication.java @@ -0,0 +1,55 @@ +package com.ykl.code; + +import com.ykl.code.config.MyConfig; +import com.ykl.code.entity.Pet; +import com.ykl.code.entity.User; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.context.annotation.Bean; + +@SpringBootApplication +public class CodeApplication { + + public static void main(String[] args) { + //1、返回我们IOC容器 + ConfigurableApplicationContext run = SpringApplication.run(CodeApplication.class, args); + /** + * Full:外部无论对配置类中的这个组件注册方法调用多少次获取的都是之前注册容器中的单实例对象 + * @return + */ + + //2、查看容器里面的组件 + String[] names = run.getBeanDefinitionNames(); + for (String name : names) { + System.out.println(name); + } + + //3、从容器中获取组件 + + Pet tom01 = run.getBean("tom", Pet.class); + + Pet tom02 = run.getBean("tom", Pet.class); + + System.out.println("组件:"+(tom01 == tom02)); + + + //4、com.atguigu.boot.config.MyConfig$$EnhancerBySpringCGLIB$$51f1e1ca@1654a892 + MyConfig bean = run.getBean(MyConfig.class); + System.out.println(bean); + + //如果@Configuration(proxyBeanMethods = true)代理对象调用方法。SpringBoot总会检查这个组件是否在容器中有。 + //保持组件单实例 + User user = bean.user01(); + User user1 = bean.user01(); + System.out.println(user == user1); + + + User user01 = run.getBean("user01", User.class); + Pet tom = run.getBean("tom", Pet.class); + + System.out.println("用户的宠物:"+(user01.getPet() == tom)); + + } + +} diff --git a/maven/maven源码/code/src/main/java/com/ykl/code/config/MyConfig.java b/maven/maven源码/code/src/main/java/com/ykl/code/config/MyConfig.java index 10742383..a4e92ba5 100644 --- a/maven/maven源码/code/src/main/java/com/ykl/code/config/MyConfig.java +++ b/maven/maven源码/code/src/main/java/com/ykl/code/config/MyConfig.java @@ -1,9 +1,40 @@ /** * Alipay.com Inc. * Copyright (c) 2004-2022 All Rights Reserved. - */package com.ykl.code.config;/** - * + */ +package com.ykl.code.config; + +import com.ykl.code.entity.Pet; +import com.ykl.code.entity.User; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import javax.annotation.Resource; + +/** * @author faran * @version : MyConfig, v 0.1 2022-11-12 13:33 faran Exp $ - */public class MyConfig { -} + */ + +@Configuration(proxyBeanMethods = true) //告诉SpringBoot这是一个配置类 == 配置文件 +public class MyConfig { + + /** + * Full:外部无论对配置类中的这个组件注册方法调用多少次获取的都是之前注册容器中的单实例对象 + * @return + */ + @Bean //给容器中添加组件。以方法名作为组件的id。返回类型就是组件类型。返回的值,就是组件在容器中的实例 + public User user01(){ + User zhangsan = new User("zhangsan", 18); + //user组件依赖了Pet组件 + zhangsan.setPet(tomcatPet()); + return zhangsan; + } + + @Bean("tom") + public Pet tomcatPet(){ + return new Pet("tomcat"); + } +} \ No newline at end of file diff --git a/maven/maven源码/code/src/main/java/com/ykl/code/entity/Pet.java b/maven/maven源码/code/src/main/java/com/ykl/code/entity/Pet.java index 48be0283..a698b1c5 100644 --- a/maven/maven源码/code/src/main/java/com/ykl/code/entity/Pet.java +++ b/maven/maven源码/code/src/main/java/com/ykl/code/entity/Pet.java @@ -1,9 +1,38 @@ /** * Alipay.com Inc. * Copyright (c) 2004-2022 All Rights Reserved. - */package com.ykl.code.entity;/** - * + */ +package com.ykl.code.entity; + +/** * @author faran * @version : Pet, v 0.1 2022-11-12 13:36 faran Exp $ - */public class Pet { + */ +public class Pet { + /** + * Setter method for property counterType. + * + * @param name value to be assigned to property name + */ + public void setName(String name) { + this.name = name; + } + + String name; + + public Pet() { + } + + public Pet(String name) { + this.name = name; + } + + /** + * Getter method for property name. + * + * @return property value of name + */ + public String getName() { + return name; + } } diff --git a/maven/maven源码/code/src/main/java/com/ykl/code/entity/User.java b/maven/maven源码/code/src/main/java/com/ykl/code/entity/User.java index 8660d856..197501c8 100644 --- a/maven/maven源码/code/src/main/java/com/ykl/code/entity/User.java +++ b/maven/maven源码/code/src/main/java/com/ykl/code/entity/User.java @@ -1,9 +1,78 @@ /** * Alipay.com Inc. * Copyright (c) 2004-2022 All Rights Reserved. - */package com.ykl.code.entity;/** - * + */ +package com.ykl.code.entity; + +/** * @author faran * @version : User, v 0.1 2022-11-12 13:34 faran Exp $ - */public class User { + */ +public class User { + String name; + int age; + + /** + * Getter method for property name. + * + * @return property value of name + */ + public String getName() { + return name; + } + + /** + * Setter method for property counterType. + * + * @param name value to be assigned to property name + */ + public void setName(String name) { + this.name = name; + } + + /** + * Getter method for property age. + * + * @return property value of age + */ + public int getAge() { + return age; + } + + /** + * Setter method for property counterType. + * + * @param age value to be assigned to property age + */ + public void setAge(int age) { + this.age = age; + } + + /** + * Getter method for property pet. + * + * @return property value of pet + */ + public Pet getPet() { + return pet; + } + + /** + * Setter method for property counterType. + * + * @param pet value to be assigned to property pet + */ + public void setPet(Pet pet) { + this.pet = pet; + } + + Pet pet; + + public User() { + } + + public User(String name, int age) { + this.name = name; + this.age = age; + } } diff --git a/maven/maven源码/code/src/main/resources/application.properties b/maven/maven源码/code/src/main/resources/application.properties new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/maven/maven源码/code/src/main/resources/application.properties @@ -0,0 +1 @@ + diff --git a/maven/maven源码/code/src/test/java/com/ykl/code/CodeApplicationTests.java b/maven/maven源码/code/src/test/java/com/ykl/code/CodeApplicationTests.java new file mode 100644 index 00000000..63efeebe --- /dev/null +++ b/maven/maven源码/code/src/test/java/com/ykl/code/CodeApplicationTests.java @@ -0,0 +1,13 @@ +package com.ykl.code; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class CodeApplicationTests { + + @Test + void contextLoads() { + } + +}