如何查一个网站的备案号,汕头市品牌网站建设公司,怎么做网站的外部连接,网店货源一件代发货一. Spring
1.1 Spring是什么#xff1f;
Spring 指的是 Spring Frameword(Spring 框架),它是一个开源框架。
Spring 是包含了众多工具方法的IoC容器。
1.2 什么是容器#xff1f;
容器时用来容纳某种物品的装置。
我们之前接触到的容器#xff1a; • List/Map -…一. Spring
1.1 Spring是什么
Spring 指的是 Spring Frameword(Spring 框架),它是一个开源框架。
Spring 是包含了众多工具方法的IoC容器。
1.2 什么是容器
容器时用来容纳某种物品的装置。
我们之前接触到的容器 • List/Map - 数据存储容器 • Tomcat- Web 容器 1.3 什么是IoC
IoC(Inversion of Control) 翻译成中文是“控制反转”的意思也就是说spring 是一个“控制反转”的容器。 在日常代码中我们通常通过new来构造对象而这个对象的生命周期由程序员和代码片段控制。但IoC则是不需要程序员来new 对象了在IoC加载时,放入IoC的对象也会加载,当我们需要这个对象了,直接从容器中取就行了,不需要再new了。 1.4 IoC 代码解释
在我们传统代码中,构建一辆车(Car),然而车需要依赖车身(FrameWork)而车身要依赖地盘Bottom)而地盘需要依赖(Tire)。代码实现如下
//车
public class Car {private FrameWork frameWork;public Car(){this.frameWorknew FrameWork();}public void init(){System.out.println(Car Init);this.frameWork.init();}
}//车身
public class FrameWork {private Bottom bottom;public FrameWork(){this.bottomnew Bottom();}public void init(){System.out.println(FrameWork Init);this.bottom.init();}
}//底盘
public class Bottom {Tire tirenull;public Bottom(){this.tirenew Tire();}public void init(){System.out.println(Bottom Init);tire.init();}
}//车轮
public class Tire {int size15;public Tire(){}public void init(){System.out.println(Tire Init,Size:size);}
}public class Test {public static void main(String[] args) {Car carnew Car();car.init();}
}但是随着对车的需求量增大对车的个性化也会越来越多比如需要不同尺寸的轮胎那这个时候就需要我们加工多种尺寸的轮胎此时就需要对上述代码进行修改。修改后的代码如下所示
//车
public class Car {private FrameWork frameWork;public Car(int size){this.frameWorknew FrameWork(size);}public void init(){System.out.println(Car Init);this.frameWork.init();}
}//车身
public class FrameWork {private Bottom bottom;public FrameWork(int size){this.bottomnew spring.old.Bottom(size);}public void init(){System.out.println(FrameWork Init);this.bottom.init();}
}//底盘
public class Bottom {Tire tirenull;public Bottom(int size){this.tirenew spring.old.Tire(size);}public void init(){System.out.println(Bottom Init);this.tire.init();}
}//车轮
public class Tire {int size15;public Tire(int size){this.sizesize;}public void init(){System.out.println(Tire Init,Size:size);}
}public class Test {public static void main(String[] args) {Car carnew Car();car.init();}
}
从以上代码可以看出若是最低层的代码改动之后这个调用链上的所有代码都需要修改。
为了解决上述问题实现解耦通过控制反转进行程序开发
//车
public class Car {FrameWork frameWorknull;public Car(FrameWork frameWork){this.frameWorkframeWork;}public void init(){System.out.println(Car Init);frameWork.init();}
}//车身
public class FrameWork {Bottom bottomnull;public FrameWork(Bottom bottom){this.bottombottom;}public void init(){System.out.println(FrameWork Init);bottom.init();}
}//地盘
public class Bottom {Tire tirenull;public Bottom(Tire tire){this.tiretire;}public void init(){System.out.println(Bottom Init);tire.init();}
}//车轮
public class Tire {int size15;public Tire(int size){this.sizesize;}public void init(){System.out.println(Tire Init,Size:size);}
}/*
* 模拟IoC
*/
public class Test {private Car car;private FrameWork frameWork;private Bottom bottom;private Tire tire;public Test(){
//如果Tire有新的属性或参数不需要修改上级对象只需要在IoC中添加或修改相应的构造对象的参数
//而上述代码的实现就相当于我们平常实现的业务逻辑这个Test就相当于Spring
//我们不需要担心对象的创建那是由Spring控制的而Spring可以根据我们提供的参数来匹配创建什么样的对象this.tirenew Tire(12);this.bottomnew Bottom(this.tire);this.frameWorknew FrameWork(this.bottom);this.carnew Car(this.frameWork);}public static void main(String[] args) {Test testnew Test();test.car.init();}
}通过上述代码我们能发现一个规律 通过应用程序的实现代码类的创建顺序是反的传统代码是Car控制并创建了FrameWork,FraemWork控制并创建了Bottom,依次往下而改进之后的控制权发生的反转不再是上级对象创建并控制下级对象了而是把下级对象注入到当前对象中下级的控制权不再由上级控制了这样即使下级类发生任何改变当前类都是不受影响的这就是典型的控制反转也就是IoC思想 二. Spring 的创建
2.1 创建一个Maven 项目 2.2 添加Spring 框架支持 dependencies!-- https://mvnrepository.com/artifact/org.springframework/spring-context --dependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactIdversion5.3.28/version/dependency!-- https://mvnrepository.com/artifact/org.springframework/spring-beans --dependencygroupIdorg.springframework/groupIdartifactIdspring-beans/artifactIdversion5.3.28/version/dependency/dependencies
在resources下创建配置文件,以下内容为固定格式(但是文件名字可以随意命名)
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
/beans
三. SpringBoot 的创建
Idea 的社区版安装Spring Boot Helper 才能创建SpringBoot项目(旗舰版是不需要安装这个插件的),社区办的idea 不能使用2021.3之后的版本(之后的版本的Spring Boot Helper 插件需要通行证,只能使用一个月). 创建SpringBoot 项目,现在只支持jdk17,jdk21
3.1 创建 SpringBoot 项目 在里面勾选maven并点击ok,会自动生成一个pom.xml文件 这里可能会出现报错,因为我所配置的国内源中没有这个版本,直接将.RELEASE删掉,重新reload一下就好了.
3.2 配置国内源
如果不配置就会导致Spring/Spring Boot 失败,或者是在maven项目中引入jar失败.
因为idea 有两份配置文件,如下图所示,所以再进行后续的配置中,要设置两次,分别给当前的项目和新项目中都进行相应的配置(只针对第一次创建Spring Boot) 上述两个路径不要带中文
若是有settings.xml文件将以下复制到mirrors/mirrors中,若是没有,可去自行下载: mirroridalimaven/idnamealiyun maven/nameurlhttp://maven.aliyun.com/nexus/content/groups/public//urlmirrorOfcentral/mirrorOf /mirror
settings.xml
将本地的方法库删除,重新加载maven jar包 删除后重新加载 !-- dependency--
!-- groupIdorg.springframework.boot/groupId--
!-- artifactIdspring-boot-starter/artifactId--
!-- /dependency--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency
pom.xml中的是上述的一个,我们需要使用第二个把第一个依赖替换掉
运行出现以下内容说明创建成功了: