Spring框架之控制反转和依赖注入

学Spring框架必须理解控制反转和依赖注入。下面各自举一个例子,来说明控制反转和依赖注入。

 

IOC(控制反转):应用本身创建和维护的依赖对象;现在交由外部容器(Spring)来创建和维护;这个控制权的转移;
就叫做控制反转。

第一步:配置applicationContextcreateproject.xml和applicationcontext.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"
    xmlns:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
        
     <bean id="create" class="createObject.CreateHelloWorld"  factory-method="create">
     
     
     </bean>  
</beans>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

<!-- 引用其他配置文件 -->

    <import resource="createObject/applicationContextcreateproject.xml"/>
</beans>
package createObject;

public class CreateHelloWorld {
    //静态工厂
    public static HelloWord create(){
        
        return new HelloWord();
    }

}

 

package createObject;

public class HelloWord {
    public void hellow(){
        System.out.print("hellow spring");
    }

}

测试类:

package createObject;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class texthell{
    public static void main(String[] args) {

    // TODO Auto-generated method stub
   //加载配置文件
       ApplicationContext context=new ClassPathXmlApplicationContext("applicationcontext.xml");
       HelloWord te=(HelloWord) context.getBean("create");
       te.hellow();
       
}
}

效果图:

DI(依赖注入):(控制反转的一个实现)在程序运行期间;动态的将依赖对象注入到组件当中(创建对象)new的工作交给spring来做;前提留接口;set get方法

第一步:配置Springapplicationcontext.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"
    xmlns:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

<bean id="wanlix" class="com.Test.test">
<property name="name" value="张嘎"/>
<property name="speak" value="一天不打黄鼠狼,就憋屈"/>

</bean>

</beans>

第二步:测试类

package com.Test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class test {
    public String name;
    public String speak;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSpeak() {
        return speak;
    }
    public void setSpeak(String speak) {
        this.speak = speak;
    }
    public static void main(String[] args) {
        
        ApplicationContext context=new ClassPathXmlApplicationContext("applicationcontext.xml");
        
        test te=(test) context.getBean("wanlix");
        System.out.print(te.getName()+"说:"+te.getSpeak());
    }

}

效果图:

您可以通过点击 右下角 的按钮 来对文章内容作出评价, 也可以通过左下方的 关注按钮 来关注我的博客的最新动态。 

如果文章内容对您有帮助, 不要忘记点击右下角的 推荐按钮 来支持一下哦   

如果您对文章内容有任何疑问, 可以通过评论或发邮件的方式联系我: 2276292708@qq.com

如果需要转载,请注明出处,谢谢!!

  

 

posted on 2015-08-15 17:19  梦之航  阅读(484)  评论(0编辑  收藏  举报

导航