【SSH】Spring:从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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 43
    评论
评论 43
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值