网站分站原理,优化关键词的方法包括,域名申请而完成以后怎么做网站,lnmp wordpress 权限文章目录Spring容器演示--采用Spring配置文件管理Bean#xff08;一#xff09;创建Maven项目#xff08;二#xff09;添加Spring依赖#xff08;三#xff09;创建杀龙任务类#xff08;四#xff09;创建勇敢骑士类#xff08;五#xff09;采用传统方式让勇敢骑士…
文章目录Spring容器演示--采用Spring配置文件管理Bean一创建Maven项目二添加Spring依赖三创建杀龙任务类四创建勇敢骑士类五采用传统方式让勇敢骑士完成杀龙任务六采用Spring容器让勇敢骑士完成杀龙任务采用构造方法注入方式注入属性值1、创建救美任务类2、创建救美骑士类3、配置救美骑士Bean4、创建旧救美骑士测试类5、创建新救美骑士测试类Spring容器演示–采用Spring配置文件管理Bean Spring容器其实就是一个Bean工厂在工厂里通过配置文件或配置类创建各种各样的Bean然后在Spring应用程序就可以按照名称或类型获取工厂里已经配置好的Bean。下面我们就通过一个具体的案例来了解Spring容器是如何工作的。创建Spring应用程序 - 骑士完成任务。 一创建Maven项目
创建Maven项目 - SpringDemo设置项目位置以及组ID 修改项目的Maven配置
二添加Spring依赖
添加到pom.xml文件的元素里如果没有下载到本地5.3.25将会显示红色
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdnet.huawei.spring/groupIdartifactIdSpringDemo/artifactIdversion1.0-SNAPSHOT/versiondependencies!--Spring核心--dependencygroupIdorg.springframework/groupIdartifactIdspring-core/artifactIdversion5.3.25/version/dependency!--Spring实体--dependencygroupIdorg.springframework/groupIdartifactIdspring-beans/artifactIdversion5.3.25/version/dependency!--Spring容器--dependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactIdversion5.3.25/version/dependency!--Spring Web--dependencygroupIdorg.springframework/groupIdartifactIdspring-web/artifactIdversion5.3.25/version/dependency!--Spring MVC--dependencygroupIdorg.springframework/groupIdartifactIdspring-webmvc/artifactIdversion5.3.25/version/dependency!--Spring测试--dependencygroupIdorg.springframework/groupIdartifactIdspring-test/artifactIdversion5.3.25/version/dependency!--单元测试--dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.13.2/versionscopetest/scope/dependency/dependencies
/project 三创建杀龙任务类
创建net.argonaut.spring.day01包然后在包里面创建SlayDragonQuest类
package net.argonaut.spring.day01;/*** 功能杀龙任务类* 作者argonaut* 日期2023年02月14日*/
public class SlayDragonQuest {public void embark() {System.out.println(执行杀龙任务……);}
}
四创建勇敢骑士类
在net.argonaut.spring.day01包里创建BraveKnight类
package net.argonaut.spring.day01;/*** 功能勇敢骑士类* 作者argonaut* 日期2023年02月14日*/
public class BraveKnight {private String name; // 骑士姓名private SlayDragonQuest slayDragonQuest; // 杀龙任务public String getName() {return name;}public void setName(String name) {this.name name;}/*** 设置杀龙任务** param slayDragonQuest*/public void setSlayDragonQuest(SlayDragonQuest slayDragonQuest) {this.slayDragonQuest slayDragonQuest;}/*** 勇敢骑士执行任务*/public void embarkOnQuest() {System.out.print(勇敢骑士[ name ]); // 骑士留名slayDragonQuest.embark(); // 执行杀龙任务}
} 五采用传统方式让勇敢骑士完成杀龙任务
在test/java里创建net.argonaut.spring.day01包然后在包里面创建TestBraveKnightOld类
package net.argonaut.spring.day01;import org.junit.Test;/*** 功能采用传统方式测试勇敢骑士类* 作者argonaut* 日期2023年02月14日*/
public class TestBraveKnightOld {Testpublic void testBraveKnight() {// 创建杀龙任务对象SlayDragonQuest slayDragonQuest new SlayDragonQuest();// 创建勇敢骑士对象BraveKnight braveKnight new BraveKnight();// 设置勇敢骑士属性braveKnight.setName(罗宾汉);braveKnight.setSlayDragonQuest(slayDragonQuest);// 调用勇敢骑士执行任务方法braveKnight.embarkOnQuest();}
} 查看程序运行结果
六采用Spring容器让勇敢骑士完成杀龙任务
在resources目录里创建log4j.properties
log4j.rootLoggerWARN, stdout, logfile
log4j.appender.stdoutorg.apache.log4j.ConsoleAppender
log4j.appender.stdout.layoutorg.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern%d %p [%c] - %m%n
log4j.appender.logfileorg.apache.log4j.FileAppender
log4j.appender.logfile.Filetarget/spring.log
log4j.appender.logfile.layoutorg.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern%d %p [%c] - %m%n 在resources里创建xmlconfig目录然后在里面创建spring-config.xml 创建杀龙任务Bean
!--配置杀龙任务Bean--
bean idslayDragonQuest classnet.huawei.spring.day01.SlayDragonQuest/
id属性 对应对象名可以任取然后在应用程序里我们可以通过这个id值从Spring容器中获取Bean对象。class属性 表明Bean对象是基于哪个类来实例化注意一定要包含包名。
创建勇敢骑士Bean
!--配置勇敢骑士Bean--
bean idbraveKnight classnet.huawei.spring.day01.BraveKnight property namename value罗宾汉/ !-- RobinHood.setName(罗宾汉)-- property nameslayDragonQuest refslayDragonQuest/ !--RobinHood.setSlayDragonQuest(slayDragonQuest)--
/bean
property元素给对象设置属性值name属性Bean对象的属性名ref属性Bean对象的属性值引用另一个Bean对象勇敢骑士Bean通过元素将杀龙任务Bean注入作为其属性。注意name属性值一定是BraveKnight类的属性名ref属性值是已定义的杀龙任务Bean的id值。
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd!--配置杀龙任务Bean--bean idslayDragonQuest classnet.huawei.spring.day01.SlayDragonQuest/!--配置勇敢骑士Bean--bean idbraveKnight classnet.huawei.spring.day01.BraveKnightproperty namename value罗宾汉/ !--braveKnight.setName(罗宾汉);--property nameslayDragonQuest refslayDragonQuest/ !--braveKnight.setSlayDragonQuest(slayDragonQuest);--/bean
/beans
创建新勇敢骑士测试类
在test/java/net.huawei.spring.day01里创建TestBraveKnightNew测试类
package net.argonaut.spring.day01;import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;/*** 功能采用Spring容器测试勇敢骑士类* 作者argonaut* 日期2023年02月14日*/
public class TestBraveKnightNew {private ClassPathXmlApplicationContext context; // 基于类路径XML配置文件的应用容器Bean工厂Before // 每次测试方法执行前都要执行的代码就放在此方法里public void init() {// 基于Spring配置文件创建应用容器context new ClassPathXmlApplicationContext(xmlconfig/spring-config.xml);// 提示用户System.out.println(Spring应用容器已创建~);}Testpublic void testBraveKnight() {// 根据名称从应用容器中获取勇敢骑士对象BraveKnight braveKnight (BraveKnight) context.getBean(braveKnight);// 勇敢骑士执行任务braveKnight.embarkOnQuest();}After // 每次测试方法执行后都要执行的代码就放在此方法里public void destroy() {// 关闭应用容器context.close();// 提示用户System.out.println(Spring应用容器已关闭~);}
}创建两个勇敢骑士Bean 基于一个类可以创建多个对象因此在spring-config.xml文件里也可以基于同一个类创建多个Bean。 基于BraveKnight类再创建两个Beanid值分别为knight1和knight2。 修改新勇敢骑士测试类 获取新建的两个勇敢骑士Bean调用执行任务方法 初始化对象其实可以调用有参构造方法来设置属性的初始值对应到Spring的Bean工厂就还有一种注入方式叫做构造方法注入。同样地我们还是通过案例来演示如何通过构造方法来注入属性值。 采用构造方法注入方式注入属性值
1、创建救美任务类
在net.argonaut.spring.day01包里创建RescueDamselQuest类
package net.argonaut.spring.day01;/*** 功能救美任务类* 作者argonaut* 日期2022年05月29日*/
public class RescueDamselQuest {public void embark() {System.out.println(执行救美任务……);}
}
2、创建救美骑士类
在net.argonaut.spring.day01包里创建DamselRescuingKnight类
package net.huawei.spring.day01;/*** 功能救美骑士类* 作者argonaut* 日期2022年05月29日*/
public class RescueDamselKnight {private String name;private RescueDamselQuest rescueDamselQuest;/*** 有参构造方法** param name* param rescueDamselQuest*/public RescueDamselKnight(String name, RescueDamselQuest rescueDamselQuest) {this.name name;this.rescueDamselQuest rescueDamselQuest;}public void embarkOnQuest() {System.out.print(救美骑士[ name ]);rescueDamselQuest.embark();}
}
3、配置救美骑士Bean !--救美任务Bean--
bean idrescueDamselQuest classnet.huawei.spring.day01.RescueDamselQuest/
!--创建救美骑士Bean--
bean idGalahad classnet.huawei.spring.day01.RescueDamselKnight constructor-arg value格拉海德/ constructor-arg refrescueDamselQuest/
/bean
4、创建旧救美骑士测试类
在test/java/net.huawei.spring.day01包里创建TestRescueDamselKnightOld类
package net.argonaut.spring.day01;import org.junit.Test;/*** 功能传统方式测试救美骑士类* 作者argonaut* 日期2022年05月29日*/
public class TestRescueDamselKnightOld {Testpublic void testRescueDamselKnight() {// 创建救美任务对象RescueDamselQuest rescueDamselQuest new RescueDamselQuest();// 创建救美骑士对象RescueDamselKnight rescueDamselKnight new RescueDamselKnight(格拉海德, rescueDamselQuest);// 救美骑士执行任务rescueDamselKnight.embarkOnQuest();}
}5、创建新救美骑士测试类
在test/java/net.huawei.spring.day01包里创建TestRescueDamselKnightNew类
package net.argonaut.spring.day01;import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;/*** 功能采用Spring容器测试救美骑士类* 作者argonaut* 日期2022年05月29日*/
public class TestRescueDamselKnightNew {private ClassPathXmlApplicationContext context; // 基于类路径XML配置文件的应用容器Before // 每次测试方法执行前都要执行的代码public void init() {// 基于Spring配置文件创建应用容器context new ClassPathXmlApplicationContext(xmlconfig/spring-config.xml);// 提示用户System.out.println(Spring应用容器已创建~);}Testpublic void testRescueDamselKnight() {// 根据名称从应用容器里获取救美骑士对象RescueDamselKnight rescueDamselKnight (RescueDamselKnight) context.getBean(Galahad);// 救美骑士执行任务rescueDamselKnight.embarkOnQuest();}After // 每次测试方法执行后都要执行的代码public void destroy() {// 关闭应用容器context.close();// 提示用户System.out.println(Spring应用容器已关闭~);}
}