spring框架springbean依赖及单一项目
依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</dependency>
完整如下
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.5.11</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>org.example</groupId>
<artifactId>springbean</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springbean</name>
<description>springbean</description>
<url/>
<licenses>
<license/>
</licenses>
<developers>
<developer/>
</developers>
<scm>
<connection/>
<developerConnection/>
<tag/>
<url/>
</scm>
<properties>
<java.version>10</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
主要考虑如下
springboot项目配置:
java.version配置与引用java依赖版本,项目配置是运行编译使用的jdk(环境配置)。
如何让idea应用短暂使用特定java环境变量终端,如下
$env:JAVA_HOME="D:\software\jdk17\jdk-17.0.12"
使用mvn package
编译机制

jdk运行环境的版本要大于jdk编写的版本配置,要大于依赖字节版本。即3大于1,且大于2。
jdk编写的大于依赖版本字节,即1大于2。
执行mvn package就是使用当前电脑的jdk环境配置打包的,而idea的project struct的jdk配置是运行时配置的。
若jdk编写版本大于jdk系统运行环境,即1大于3,
不执行mvn package,执行idea 运行
若jdk编写大于jdk运行环境,但依赖字节版本大于jdk运行环境,则报错依赖:

执行mvn compile的时候无论系统环境jdk变量版本是多少,只要项目的
使用低版本的系统环境jdk编译mvn compile 就会

mvn compile运行执行的是源码生成class字节码后的文件。所以想要测试命令,需要将class字节码文件删除。
测试失败后需要及时删除class字节码,否则如下图

使用idea的run是使用idea的project struct的jdk环境并生成class字节码文件并填入指定的jdk环境。之后运行mvn compile就使用这些字节码文件就成功了。
使用idea的build project就没有填入指定的jdk环境。
idea特征:
project struct的jdk配置会影响本地系统环境终端的mvn compile的jdk版本
idea的build project需要在没有生成字节码的情况下才能生成完整的字节码。
BeanFactory 报错并不是官方的人提前把各种错误信息手动写好等你触发 。
真正的原因是:Spring 在运行时创建和管理 Bean 的过程中检测到问题,然后抛出对应的异常类。这些异常是框架设计好的机制,而不是人工一个个试出来再填进去的。