当前位置: 首页 > news >正文

利用beans.xml进行简单的Spring应用上下文创建与使用

继上次配置Spring完成后,我们来创建一个简单的例程来理解Spring中利用beans.xml创建应用上下文的方法。

 

程序路径包为:com.spring.kinghts(kinght单词拼写错误,怕麻烦就没有重构)

首先,我们创建两个接口:Knight(英雄)与ToDo(做什么)。代码如下:

package com.spring.kinghts;

public interface Knight {
	public void doWhat();
}
package com.spring.kinghts;

public interface ToDo {
	public void toDo();
}

接下来,创建两个上述接口的实现类:Knight_guanyu(关羽)与ToDo_guanyu_drink(关羽喝酒)。代码如下:

package com.spring.kinghts;
public class Knight_guanyu implements Knight{
	private ToDo todo;
	public Knight_guanyu(ToDo todo){
		this.todo=todo;
	}
	@Override
	public void doWhat() {
		todo.toDo();
	}
}

关羽类的构造器中传入了ToDo接口引用对象,目的是为了实现依赖构造三种方法中其一(构造器依赖),以降低耦合度。

package com.spring.kinghts;
public class ToDo_guanyu_drink implements ToDo{
	@Override
	public void toDo() {
		System.out.println("我可以喝酒");
	}
}

接下来创建beans.xml文件。代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		  xsi:schemaLocation="http://www.springframework.org/schema/beans
		  http://www.springframework.org/schema/beans/spring-beans.xsd">
	
	<bean id="knight" class="com.spring.kinghts.Knight_guanyu">
		<constructor-arg ref="todo"/>
	</bean>
	
	<bean id="todo" class="com.spring.kinghts.ToDo_guanyu_drink">
	</bean>	  
</beans>

第一个<bean>中,注入了Knight_guanyu bean,第二个<bean>中,创建ToDo_guanyu_drink bean。在这里,Knight_guanyu bean在构造的时候传入了ToDo_guanyu_drink bean的引用。

最后,创建KnightMain类来加载包含Knight的Spring上下文。代码如下:

package com.spring.kinghts;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class KnightMain {
	public static void main(String[] args) throws Exception{
		ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
		Knight_guanyu obj=(Knight_guanyu) context.getBean(Knight.class);
		obj.doWhat();
	}
}

ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");作用是加载Spring上下文
Knight_guanyu obj=(Knight_guanyu) context.getBean(Knight.class);作用是获取knight bean
obj.doWhat();作用是使用knight

 

                            热爱分享拒绝拿来主义,博客精神永存——cvrigo
                                2016-11-07 23:24:37
  

 

 

转载于:https://www.cnblogs.com/cvirgo/p/6041113.html

相关文章:

  • javaScript的正则表达式 (一)
  • spark学习1(hadoop集群搭建)
  • 记录水电系统开发的心理【1】
  • MySQL -- 关闭 binlog
  • MySQL密码丢失,解决方法
  • shell自动备份文件或目录到本地和远程主机
  • 表格线边框重复css解决方法
  • HTTP 500.21 处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”...
  • iOS 网络--图片库本地选取
  • Js获取当前日期时间和格式化日期
  • 在SublimeText上配置ReactJS开发环境
  • linux ftp 服务配置
  • xmake 工程描述语法更新
  • 2 unit 9
  • mysql编程--创建函数出错的解决方案
  • “大数据应用场景”之隔壁老王(连载四)
  • Android Studio:GIT提交项目到远程仓库
  • C++11: atomic 头文件
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • HTTP请求重发
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • Sublime Text 2/3 绑定Eclipse快捷键
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • Webpack入门之遇到的那些坑,系列示例Demo
  • win10下安装mysql5.7
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 蓝海存储开关机注意事项总结
  • 详解移动APP与web APP的区别
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 异常机制详解
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • - 转 Ext2.0 form使用实例
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • #define
  • #QT(一种朴素的计算器实现方法)
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (06)Hive——正则表达式
  • (1) caustics\
  • (libusb) usb口自动刷新
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (转)人的集合论——移山之道
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .NET/C# 中设置当发生某个特定异常时进入断点(不借助 Visual Studio 的纯代码实现)
  • .NET国产化改造探索(三)、银河麒麟安装.NET 8环境
  • .Net中wcf服务生成及调用
  • .vue文件怎么使用_我在项目中是这样配置Vue的