【SSH】Spring:从Demo看IOC基本原理
对于IOC的学习一直都不体系化,导致自己迷惑,只知道“依赖注入“这四个挂在嘴边的字符串。通过学习并结合自己目前的理解来看,IOC就像是一种解耦合的技术。通过配置文件将两个对象之间的依赖降低。之所以说IOC容器是因为IOC技术的体现主要是在xml中,而xml则是一种数据存储的结构,所以提到IOC时总是和容器相联系。 下面通过一个运用IOC原理的Demo演示一下IOC的强大:
对于IOC的学习一直都不体系化,导致自己迷惑,只知道“依赖注入“这四个挂在嘴边的字符串。通过学习并结合自己目前的理解来看,IOC就像是一种解耦合的技术。通过配置文件将两个对象之间的依赖降低。之所以说IOC容器是因为IOC技术的体现主要是在xml中,而xml则是一种数据存储的结构,所以提到IOC时总是和容器相联系。
之前对IOC学习时,写过一篇从感性人数《Ioc:从自助和回转火锅看控制反转》,初次学习的可以看看,不同角度不同理解。
下面通过一个运用IOC原理的Demo演示一下IOC的强大:
实现思路:
类A + XML配置文件配置A的信息 + 应用程序调用类A。
解释:应用程序调用某类A 时,一般会实例化A ,然后使用A的方法或属性,要知道实例化其实就是分配了新的空间,这其实就已经建立了强依赖,该应用程序和类A的实例具有相同的生命周期。但是如果使用IOC进行配置就不一样了,下面是demo,比较简单,但是能看出区别。
Java 类 :HelloWorld.java
<span style="font-family:Verdana;font-size:14px;">Package com.gc.action;
Public class HelloWorld{
PublicString msg=null;
Public void setMsg (String msg){
This.msg=msg;
}
Public StringgetMsg(){
Return this.msg;
}
}
</span>
Xml :Config.xml
<span style="font-family:Verdana;font-size:14px;"><?xml version=”1.0” encoding=”UTF-8”>
<!DOCTYPE beans PUBLIC “-//SPRING//DTDBEAN//EN”
http://www.springframework.org/dtd/spring-beans.dtd>
<beans>
<bean id =”HelloWorld”class=”com.gc.action.Helloworld”>
<property name=”msg”>
<value>HelloWorld</value>
</property>
</bean>
</beans></span>
其中bean id 表示该类的名称,class为该类的地址来源。
Property 内的name=msg表示类helloworld中定义的msg,value值为为该类msg注入的字符串。
测试程序:TestHelloWorld.java
<span style="font-family:Verdana;font-size:14px;">Package com.gc.test;
Importorg.springframework.context.ApplicationContext;
Import org.springframework.context.support.FileSystermXmlApplicationContext;
Import com.gc.action.HelloWorld;
Public class TestHelloWorld{
Public static void main(String [] args){
//通过appliactioncontext获取spring配置文件
ApplicationContext actx = newFileSystemXmlApplicationContext(“config.xml”);
//通过bean id 获取bean(helloworld 类)
HelloWorld helloworld =(HelloWorld)actx.getBean(“HelloWorld”);
System.out.printin(helloworld.getMsg());
}
}</span>
输出结果为xml中为msg注入的value值。如果想输出不同结果,只要改变spring 的xml文件即可,达到解耦合的作用。这就是Ioc简单的应用原理了。
对IOC的学习还需要进一步的研究,多多交流。
更多推荐
所有评论(0)