网站建设的元素,大连seo加盟,最近时事新闻热点,免费空间列表一、Spring容器演示
采用Spring配置文件管理Bean
1、创建Maven项目 修改项目的Maven配置 2、添加Spring依赖 在Maven仓库里查找Spring框架#xff08;https://mvnrepository.com#xff09; 同上添加其他依赖
?xml version1.0 encodingUTF-8…一、Spring容器演示
采用Spring配置文件管理Bean
1、创建Maven项目 修改项目的Maven配置 2、添加Spring依赖 在Maven仓库里查找Spring框架https://mvnrepository.com 同上添加其他依赖
?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刷新并下载依赖 3、创建杀龙任务类 创建net.cxf.spring.day01包然后在包里面创建SlayDragonQuest类
package net.cxf.spring.day01;/*** 功能杀龙任务类* 作者cxf* 日期2023年02月14日*/
public class SlayDragonQuest {public void embark() {System.out.println(执行杀龙任务……);}
}3、创建勇敢骑士类 在net.cxf.spring.day01包里创建BraveKnight类
package net.cxf.spring.day01;/*** 功能勇敢骑士类* 作者cxf* 日期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(); // 执行杀龙任务}
}
5、采用传统方式让勇敢骑士完成杀龙任务
package net.cxf.spring.day01;import org.junit.Test;/*** 功能采用传统方式测试勇敢骑士类* 作者cxf* 日期2023年02月14日*/
public class TestBraveKnightOld {Testpublic void testBraveKnight() {// 创建杀龙任务对象SlayDragonQuest slayDragonQuest new SlayDragonQuest();// 创建勇敢骑士对象BraveKnight braveKnight new BraveKnight();// 设置勇敢骑士属性braveKnight.setName(罗宾汉);braveKnight.setSlayDragonQuest(slayDragonQuest);// 调用勇敢骑士执行任务方法braveKnight.embarkOnQuest();}
}
运行结果错误解决方法 三个地方保持一致 6、采用Spring容器让勇敢骑士完成杀龙任务
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创建Spring配置文件 在resources里创建xmlconfig目录然后在里面创建spring-config.xml 输入Spring配置文件名 单击OK 在Spring配置文件里创建Bean
?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!--配置杀龙任务Bean--bean idslayDragonQuest classnet.cxf.spring.day01.SlayDragonQuest/!--配置勇敢骑士Bean--bean idbraveKnight classnet.cxf.spring.day01.BraveKnightproperty namename value罗宾汉/property nameslayDragonQuest refslayDragonQuest//beanbean idknight1 classnet.cxf.spring.day01.BraveKnightproperty namename value高文/property nameslayDragonQuest refslayDragonQuest//beanbean idknight2 classnet.cxf.spring.day01.BraveKnightproperty namename value加雷思/property nameslayDragonQuest refslayDragonQuest//bean!--配置救美任务Bean--bean idrescueDamselQuest classnet.cxf.spring.day01.RescueDamselQuest/!--配置救美骑士Bean--bean idrescueDamselKnight classnet.cxf.spring.day01.RescueDamselKnightconstructor-arg value格拉海德/constructor-arg refrescueDamselQuest//bean/beans创建新勇敢骑士测试类
package net.cxf.spring.day01;import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;/*** 功能采用Spring容器测试勇敢骑士类* 作者cxf* 日期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();BraveKnight knight1 (BraveKnight) context.getBean(knight1);braveKnight.embarkOnQuest();BraveKnight knight2 (BraveKnight) context.getBean(knight2);braveKnight.embarkOnQuest();}After // 每次测试方法执行后都要执行的代码就放在此方法里public void destroy() {// 关闭应用容器context.close();// 提示用户System.out.println(Spring应用容器已关闭~);}
} 创建两个勇敢骑士Bean 修改新勇敢骑士测试类 7、采用构造方法注入方式注入属性值
package net.cxf.spring.day01;/*** 功能救美任务类* 作者* 日期2023年02月15日*/
public class RescueDamselQuest {public void embark() {System.out.println(执行救美任务……);}
}
创建救美骑士类 在net.cxf.spring.day01包里创建RescueDamselKnight类 package net.cxf.spring.day01;/*** 功能救美骑士类* 作者华卫* 日期2023年02月15日*/
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();}
}创建旧救美骑士测试类 在test/java/net.cxf.spring.day01包里创建TestRescueDamselKnightOld类
package net.cxf.spring.day01;import org.junit.Test;/*** 功能采用传统方式测试救美骑士类* 作者cxf* 日期2023年02月15日*/
public class TestRescueDamselKnightOld {Testpublic void testRescueDamselKnight() {// 创建救美任务对象RescueDamselQuest rescueDamselQuest new RescueDamselQuest();// 创建救美骑士对象RescueDamselKnight rescueDamselKnight new RescueDamselKnight(格拉海德, rescueDamselQuest);// 救美骑士执行任务rescueDamselKnight.embarkOnQuest();}
} 配置救美骑士Bean
!--配置救美任务Bean--bean idrescueDamselQuest classnet.cxf.spring.day01.RescueDamselQuest/!--配置救美骑士Bean--bean idrescueDamselKnight classnet.cxf.spring.day01.RescueDamselKnightconstructor-arg value格拉海德/constructor-arg refrescueDamselQuest//bean创建新救美骑士测试类 在test/java/net.cxf.spring.day01包里创建TestRescueDamselKnightNew类
package net.cxf.spring.day01;import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;/*** 功能采用Spring容器测试救美骑士类* 作者* 日期2023年02月15日*/
public class TestRescueDamselKnightNew {private ClassPathXmlApplicationContext context; // 基于类路径XML配置文件的应用容器Bean工厂Before // 每次测试方法执行前都要执行的代码就放在此方法里public void init() {// 基于Spring配置文件创建应用容器context new ClassPathXmlApplicationContext(xmlconfig/spring-config.xml);// 提示用户System.out.println(Spring应用容器已创建~);}Testpublic void testRescueDamselKnight() {// 根据名称从应用容器中获取救美骑士对象RescueDamselKnight rescueDamselKnight (RescueDamselKnight) context.getBean(rescueDamselKnight);// 救美骑士执行任务rescueDamselKnight.embarkOnQuest();}After // 每次测试方法执行后都要执行的代码就放在此方法里public void destroy() {// 关闭应用容器context.close();// 提示用户System.out.println(Spring应用容器已关闭~);}
}