Spring反转控制与依赖注入

来源:互联网 发布:数字规律分析软件 编辑:程序博客网 时间:2024/05/17 06:17
        Spring反转控制IOC(inversion of control)就是由容器来控制程序之间的关系,这并不是在Spring中所特有的概念,在Spring中具体的表现就是将我们的类写进配置文件中,有Spring容器来进行控制,当程序需要时就由容器来来自动调用。依赖注入是就初始化Class A时要先初始化Class B那么Class A就要依赖Class B,这个过程由Spring容器来完成,这就是所谓的依赖注入。
       
       我们来看一个小例子。
       在这之前需要将spring.jar加入到classpath中。
       HelloIOC.java;
       package com.testspring.basic.ioc;
       public class HelloIOC {
               private String helloIOC = "helloIOC!";
               public void setHelloIOC(String helloIOC) {
                   this.helloIOC = helloIOC;
               }
               public String getHelloIOC() {
                   return helloIOC;
               }
       }

       MyIOC .java
       package com.testspring.basic.ioc;
       public class MyIOC {
               HelloIOC helloIOC;
               public MyIOC(HelloIOC helloIOC){
                   this.helloIOC = helloIOC;
               }
               public static MyIOC createInstance(HelloIOC helloIOC){
                   return new MyIOC(helloIOC);
               }
               public void thisMethod(){
                   System.out.println(helloIOC.getHelloIOC());
               }
               public void init(){
                   System.out.println("初始化方法");
               }
       }

    bean.xml
    <?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="HelloIOC" class="com.testspring.basic.ioc.HelloIOC" singleton="false">
                    <property name="helloIOC">
                            <value>helloIOC</value>
                    </property>
         </bean>   
         <bean id="MyIOC" class="com.testspring.basic.ioc.MyIOC" init-method="init"                                                                                                                                             factory-method="createInstance">
                  <constructor-arg><ref bean="HelloIOC"/></constructor-arg>
        </bean>
    </beans>
    将bean.xml配置文件放到跟目录下
   
    测试文江Test.java
    import com.testspring.basic.ioc.*;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.FileSystemXmlApplicationContext;
    public class Test{
            public static void main(String[] args){
                 
                 ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
                 MyIOC myIOC = (MyIOC)context.getBean("MyIOC");
                 myIOC.thisMethod();
                
            }
    }

    这样就完成了一个简单Spring入门程序。
    需要注意的是singleton属性,当singleton=true时,每次需要被描述的Bean时就由Spring容器来实例出一个,当当singleton=false时,被描述的Bean只被实例化一次,也就是说,容器中只存在一个该Bean的实例.
   
原创粉丝点击