Spring中的IOC示例
Spring中的IOC示例
工程的大概内容是:
一个人在中国时用中国话问候大家,在国外时用英语问候大家。
其中,
IHelloMessage是接口,用来定义输出问候信息
public interface IHelloMessage {
public String sayhello();
}
HelloWorld是接口的实现类,向用户输出 hello world 信息
public class HelloWorld implements IHelloMessage { @Override
public String sayhello() {
// TODO Auto-generated method stub
return "hello world";
} }
HelloChina 是接口的实现类,向用户输出 大家好 信息
public class HelloChina implements IHelloMessage{ @Override
public String sayhello() {
// TODO Auto-generated method stub
return "大家好";
} }
Person是人物类,调用IHelloMessage接口,向用户输出问候信息
public class Person {
private IHelloMessage helloMessage; public IHelloMessage getHelloMessage() {
return helloMessage;
} public void setHelloMessage(IHelloMessage helloMessage) {
this.helloMessage = helloMessage;
}
public String sayHello(){
return helloMessage.sayhello();
} }
Main是程序的入口类,用于加载配置文件以及启动IOC容器,调用人物类,向用户输出问候信息
public class Main { public static void main(String[] args) {
//利用FileSystemResource读取配置文件
Resource r = new FileSystemResource("helloMessage.xml");
//利用XmlBeanFactory加载配置文件同时启动IOC容器
BeanFactory f = new XmlBeanFactory(r);
//接下来在IOC容器中获取Person类的实例
Person person = (Person) f.getBean("person");
String message = person.sayHello();
System.out.println(message);
} }
配置文件helloMessage
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="helloWorld" class="com.xiongda.spring.hello.HelloWorld"></bean>
<bean id="helloChina" class="com.xiongda.spring.hello.HelloChina"></bean>
<bean id="person" class="com.xiongda.spring.hello.Person">
<property name="helloMessage" ref="helloWorld"/>
</bean>
</beans>
可以看出原本的类之间是独立的,通过配置文件在他们之间建立了依赖,也就是说将控制权由原来的对象本身转移到了配置文件当中,也就是所谓的控制反转
Spring中的IOC示例的更多相关文章
- 详谈 Spring 中的 IOC 和 AOP
这篇文章主要讲 Spring 中的几个点,Spring 中的 IOC,AOP,下一篇说说 Spring 中的事务操作,注解和 XML 配置. Spring 简介 Spring 是一个开源的轻量级的企业 ...
- Spring中的IOC
在学习spring的时候,最常听到的词应该就是IOC和AOP了,以下,我从我的角度再次理解一下Spring里的IOC和AOP. IOC简单介绍 IoC(InversionofControl):IoC就 ...
- 用IDEA详解Spring中的IoC和DI(挺透彻的,点进来看看吧)
用IDEA详解Spring中的IoC和DI 一.Spring IoC的基本概念 控制反转(IoC)是一个比较抽象的概念,它主要用来消减计算机程序的耦合问题,是Spring框架的核心.依赖注入(DI)是 ...
- 理解Spring中的IoC和DI
什么是IoC和DI IoC(Inversion of Control 控制反转):是一种面向对象编程中的一种设计原则,用来减低计算机代码之间的耦合度.其基本思想是:借助于"第三方" ...
- 理解Spring中的IOC和AOP
我们是在使用Spring框架的过程中,其实就是为了使用IOC,依赖注入和AOP,面向切面编程,这两个是Spring的灵魂. 主要用到的设计模式有工厂模式和代理模式 IOC就是典型的工厂模式,通过ses ...
- 浅谈Spring中的IOC容器
一.IOC.DI基本概念 IoC(Inversion of Control)控制反转指的是把对象的创建,初始化,销毁等工作交给容器来做.由容器控制对象的生命周期(传统方式中是由我们程序员主动创建对象. ...
- Spring中的IoC(控制反转)具体是什么东西
IOC:inverse of Control: 控制反转. 意思是程序中的之间的关系,不用代码控制,而完全是由容器来控制.在运行阶段,容器会根据配置信息直接把他们的关系注入到组件中.同样,这也是 依赖 ...
- (二)Spring中的ioc
目录 Spring的ioc操作 ioc底层使用的技术 ioc底层原理 ioc入门案例 bean管理(xml方式) IOC和DI的区别 Spring整合WEB的原理 Spring 整合的具体操作 Spr ...
- Spring中的IOC\DI\AOP等概念的简单学习
IoC(Inversion of Control,控制反转).这是spring的核心,贯穿始终, 所谓IoC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系.Spr ...
随机推荐
- 盘点Xcode中开发者最喜爱的十大开源插件
Xcode IDE拥有着诸如导航.重构.校准等众多非常高大上的工具,而予以辅助的插件更是在Xcode的基础上对相关功能进行改进与扩展.在应用开发过程中,通过开源包管理器Alcatraz对插件进行安装管 ...
- python中 使用join()方法 对各种数据类型中元的素进行合并拼接
"连接符".join(列表或元组或字符串或字典) 返回的是一个使用连接符进行拼接的字符串 如果对象是列表,元组,就是以一个下标元素为单位进行拼接 如果对象是字符串,就是一个单词元素 ...
- 鬼知道是啥系列之——STL(lower_bound(),upper_bound() )
引子,不明觉厉: 百度,渐入佳境: 头铁,入门到放弃: lower_bound(): 头文件: #include<algorithm>函数功能: 函数lower_bound()在f ...
- 使用jquery怎么选择有两个class的元素?
实例: 我们想要选择class为:box_list clearfix 的div <div class="box_list clearfix" style="z-in ...
- maven添加仓库没有的jar包
mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.4.0 -Dpackaging= ...
- Java并发编程实践读书笔记(3)任务执行
类似于Web服务器这种多任务情况时,不可能只用一个线程来对外提供服务.这样效率和吞吐量都太低. 但是也不能来一个请求就创建一个线程,因为创建线程的成本很高,系统能创建的线程数量是有限的. 于是Exec ...
- 【BZOJ3625】【codeforces438E】小朋友和二叉树 生成函数+多项式求逆+多项式开根
首先,我们构造一个函数$G(x)$,若存在$k∈C$,则$[x^k]G(x)=1$. 不妨设$F(x)$为最终答案的生成函数,则$[x^n]F(x)$即为权值为$n$的神犇二叉树个数. 不难推导出,$ ...
- POJ 1247
#include<iostream> using namespace std; int main(){ ,sum=; int * guest; do{ sum=; sam_num=; ci ...
- POJ 1047
#include <iostream> #define MAXN 100 using namespace std; char _m[MAXN]; int ans[MAXN]; int ma ...
- 手机端布局,rem布局动态获取根字体大小
手机端布局,rem布局动态获取根字体大小. 以下代码: //rem布局动态获取根字体大小 function remDynamicLayout(){ var $windowWidth = $(windo ...