Spring---基于Spring IOC的小程序

实现的功能以及各文件间的关系

IHelloMessage:一个接口,用于定义输出问候信息。

HelloWorld、HelloChina:接口的实现类。在这里表示人在不同的地方

Person:一个人物类,调用IHelloMessage接口,向用户输出问候信息

Main:程序的入口类,用于加载配置文件以及启动IOC容器,调用人物类,向用户输出问候信息

IHelloMessage

public interface IhelloMessage {public String sayHello();public String say();}

 

HelloWorld、HelloChina

public class HelloWord implements IhelloMessage {@Overridepublic String sayHello() {// TODO Auto-generated method stubreturn "Hello World";}@Overridepublic String say() {// TODO Auto-generated method stubreturn "ceshi";}}

 

Person

public class Person {private IhelloMessage helloMessage;public void setHelloMessage(IhelloMessage helloMessage) {this.helloMessage = helloMessage;}public IhelloMessage getHelloMessage() {return helloMessage;}public String sayHello() {return helloMessage.say();}}

 

Main

public class Main {public static void main(String[] args) {// 读取配置文件Resource resource = new FileSystemResource("helloMessage.xml");// 加载并启动IOC容器BeanFactory factory = new XmlBeanFactory(resource);// 从容器中获取实例Person person = (Person) factory.getBean("person");String str = person.sayHello();System.out.println(str);}}

 

spring3.1以上的版本中XmlBeanFactory已过时,有两种解决方案

1.将XmlBeanFactory替换成DefaultListableBeanFactory和XmlBeanDefinitionReader,代码如下Main类所写

public class Main {public static void main(String[] args) {// 读取配置文件Resource resource = new FileSystemResource("helloMessage.xml");// 构造工厂DefaultListableBeanFactory factory= new DefaultListableBeanFactory ();// 通过构造工厂得到加载并启动IOC容器XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(factory);// 将读取到的配置文件加载到容器中
        reader.loadBeanDefinitions(resource);// 从容器中获取实例Person person = (Person) factory.getBean("person");String str = person.sayHello();System.out.println(str);}}

 2.使用其它几种方式加载配置文件。详见Spring---加载配置文件的几种方法(org.springframework.beans.factory.BeanDefinitionStoreException)

配置文件xml

Java bean

每个bean对应一个java文件,当这个类文件配置到spring容器当中后,就变成了一个一个小豆子,而每个小豆子都拥有自己独立的功能。在运行spring工程之前,我们需要做的有两件事情。第一,将这些java类以java bean的形式注册到spring容器中。第二,通过配置文件来配置java bean之间的依赖关系。各个单独的类(组件)只需要关心自己的核心业务逻辑,而它们之间的依赖关系,则交由spring容器来配置和管理,这就是控制反转,而相对于类(组件),我们则可以称为依赖注入。以下是配置文件的示例代码

<?xml version="1.0" encoding="UTF-8"?>
<!-- 定义使用哪种规范进行解析配置文件 -->
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" 
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans><!-- bean:定义java bean --><bean id = "helloWorld" class = "com.hudongwu.spring.chapter01.HelloWord"></bean><bean id = "helloChina" class = "com.hudongwu.spring.chapter01.HelloChina"></bean><bean id = "person" class = "com.hudongwu.spring.chapter01.Person"><!-- 与其它java bean建立依赖关系 --><property name="helloMessage" ref="helloWorld"></property></bean>
</beans>

 

转载于:https://www.cnblogs.com/xiaobaizhiqian/p/7746340.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/253039.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MIPI DSI协议介绍

原文地址&#xff1a;http://blog.csdn .NET/qq160816/article/details/19555957 一、MIPI MIPI&#xff08;移动行业处理器接口&#xff09;是Mobile Industry Processor Interface的缩写。MIPI&#xff08;移动行业处理器接口&#xff09;是MIPI联盟发起的为移动应用处理器制…

130242014018-郑志良-第2次实验

一、实验目的 1&#xff0e;熟悉体系结构的风格的概念 2&#xff0e;理解和应用管道过滤器型的风格。 3、理解解释器的原理 4、理解编译器模型 二、实验环境 硬件&#xff1a; 软件&#xff1a;Python或任何一种自己喜欢的语言 三、实验内容 1、实现“四则运算”的简易翻译器。…

【BZOJ 4170】 4170: 极光 (CDQ分治)

4170: 极光 Time Limit: 30 Sec Memory Limit: 512 MBSubmit: 121 Solved: 64Description "若是万一琪露诺&#xff08;俗称rhl&#xff09;进行攻击&#xff0c;什么都好&#xff0c;冷静地回答她的问题来吸引她。对方表现出兴趣的话&#xff0c;那就慢慢地反问。在她考…

自动生成web服务器日志解析规则

2019独角兽企业重金招聘Python工程师标准>>> 当前web服务器的多样化使得访问日志的数据清洗变得越来越复杂&#xff0c;企业需要投入专业的数据清洗人员编写数据清洗规则&#xff08;解析规则或者解析正则&#xff09;&#xff0c;或者需要关心web服务器访问日志的生…

mybatis一级缓存二级缓存

一级缓存 Mybatis对缓存提供支持&#xff0c;但是在没有配置的默认情况下&#xff0c;它只开启一级缓存&#xff0c;一级缓存只是相对于同一个SqlSession而言。所以在参数和SQL完全一样的情况下&#xff0c;我们使用同一个SqlSession对象调用一个Mapper方法&#xff0c;往往只执…

mysql简单创建数据库权限(待修改备注)

CREATE DATABASE web DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;一、环境&#xff1a;CentOS 6.8mysql 5.6二、背景给外包的工作人员提供我司某台服务器的 mysql 中某个数据库的访问权限。之所以要做限制&#xff0c;是防止他们对我司其他的数据库非法进行操作。三、…

ISP 图像传感器camera原理

1、Color Filter Array — CFA 随着数码相机、手机的普及&#xff0c;CCD/CMOS 图像传感器近年来得到广泛的关注和应用。 图像传感器一般都采用一定的模式来采集图像数据&#xff0c;常用的有 BGR 模式和 CFA 模式。BGR 模式是一种可直接进行显示和压缩等处理的图像数据模式&am…

51nod 1027 大数乘法

1027 大数乘法基准时间限制&#xff1a;1 秒 空间限制&#xff1a;131072 KB 分值: 0 难度&#xff1a;基础题收藏关注给出2个大整数A,B&#xff0c;计算A*B的结果。 Input第1行&#xff1a;大数A 第2行&#xff1a;大数B (A,B的长度 < 1000&#xff0c;A,B > 0&#xff…

C#如何开发多语言支持的Winform程序

C# Winform项目多语言实现(支持简/繁/英三种语言)有很多种方案实现多语言&#xff0c;我在这里介绍一种最简单最容易理解的&#xff0c;作为教学材题应该从通俗易懂入手。在写这篇文章之前&#xff0c;本来想用枚举窗体对象成员的方式设置语言&#xff0c;但是找不到源代码了&a…

Alpha 冲刺 (2/10)

Alpha 冲刺 &#xff08;2/10&#xff09; 队名&#xff1a;第三视角 组长博客链接 本次作业链接 团队部分 团队燃尽图 工作情况汇报 张扬&#xff08;组长&#xff09; 过去两天完成了哪些任务&#xff1a; 文字/口头描述&#xff1a; 1、学习qqbot库&#xff1b; 2、实时保存…

Linux C语言调用C++动态链接库

Linux C语言调用C动态链接库 标签&#xff1a; C调用C库 2014-03-10 22:56 3744人阅读 评论(0) 收藏 举报 分类&#xff1a; 【Linux应用开发】&#xff08;48&#xff09; 版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 如果你有一个c做的动态…

HTTP Live Streaming直播(iOS直播)技术分析与实现

不经意间发现&#xff0c;大半年没写博客了&#xff0c;自觉汗颜。实则2012后半年&#xff0c;家中的事一样接着一样发生&#xff0c;实在是没有时间。快过年了&#xff0c;总算忙里偷闲&#xff0c;把最近的一些技术成果&#xff0c;总结成了文章&#xff0c;与大家分享。 前些…

noip模拟赛 遭遇

分析&#xff1a;暴力挺好打的&#xff0c;对于前30%的数据神搜&#xff0c;hi相同的数据将所有的建筑按照c从小到大排序&#xff0c;看最多能跳多少,ci0的数据将所有的建筑按照h从小到大排序&#xff0c;枚举起点和终点&#xff0c;看能否跳这么多,取个max就可以了.这样70分就…

揭开全景相机创业真相:国外一开源国内就自主

今年以来全景相机有了一个大爆发&#xff0c;国外Google、三星、诺基亚等大厂都进入了这个领域&#xff0c;国内也有很多厂商推出了全景相机。 Bubl全景相机国外一开源&#xff0c;国内就自主。这在VR&#xff08;虚拟现实&#xff09;领域体现的淋漓尽致——Google的Cardborad…

福大软工1816 · 团队现场编程实战(抽奖系统)

值得一看的补充版本演示视频 软工锦鲤在这里程序版本链接及说明 按时提交版本 以基础功能为主github链接&#xff1a;first version测试环境说明 本程序在python 3.6以上环境下运行操作说明&#xff1a; 键入抽奖关键词&#xff0c;支持&#xff1a;#我要红包#或“我要换组“或…

LeakCanary——直白的展现Android中的内存泄露

之前碰到的OOM问题&#xff0c;终于很直白的呈现在我的眼前&#xff1a;我尝试了MAT&#xff0c;但是发现不怎么会用。直到今天终于发现了这个新工具&#xff1a; 当我们的App中存在内存泄露时会在通知栏弹出通知&#xff1a; 当点击该通知时&#xff0c;会跳转到具体的页面&am…

老司机做VR视频,需要什么样的全景相机?

做为一个在全景内容领域摸爬滚打一年有余的老司机&#xff0c;经历了太多的坑。最近有不少朋友转行进入这个领域&#xff0c;问我买什么样的相机好。我现在项目太多&#xff0c;根本没空详尽解答。所以写下这篇文章&#xff0c;不懂得自己看吧。 说白了&#xff0c;买什么样子…

域乎曹胜虎:传统互联网“生病”了

11月17日&#xff0c;2018&#xff08;第12届&#xff09;创业周暨全球创业周中国站在上海盛大召开&#xff0c;由上海域乎信息技术有限公司&#xff08;以下简称“域乎”&#xff09;承办的区块链专场论坛——《区块链产业应用赋能精英论坛》成功举办&#xff0c;吸引了众多业…

[No0000112]ComputerInfo,C#获取计算机信息(cpu使用率,内存占用率,硬盘,网络信息)...

github地址&#xff1a;https://github.com/charygao/SmsComputerMonitor 软件用于实时监控当前系统资源等情况&#xff0c;并调用接口&#xff0c;当资源被超额占用时&#xff0c;发送警报到个人手机&#xff1b;界面模拟Console的显示方式&#xff0c;信息缓冲大小由配置决定…

I2C总线之(一)---概述

概述&#xff1a;IC 是Inter-Integrated Circuit的缩写&#xff0c;发音为"eye-squared cee" or "eye-two-cee" , 它是一种两线接口。 IC 只是用两条双向的线&#xff0c;一条 Serial Data Line (SDA) &#xff0c;另一条Serial Clock (SCL)。 SCL&#xf…