zoukankan      html  css  js  c++  java
  • Spring:Spring-IOC实例化bean的常用三种方式

    Spring容器提供了三种对bean的实例化方式:


    1)构造器实例化

    public class Demo {
        private String name;
        //getter和setter方法略
    }
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd">
        <!-- 构造器实例化 -->
        <bean id="demo1" class="com.oak.junit.day01.Demo"></bean>
    </beans>

    测试:

    @Test
        public void testCtx() {
            //实例化Spring容器
            ApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml"); 
            //取出demo1
            Demo demo1=ctx.getBean("demo1",Demo.class);
            System.out.println(demo1);
        }

    2)静态工厂方法实例化

    public class DemoBeanFactory {
        //静态工厂方法-返回一个Demo实例
        public static Demo staticDemoBean(){
            return new Demo();
        }
    }
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd">
        <!-- 构造器实例化 -->
        <bean id="demo1" class="com.oak.junit.day01.Demo"></bean>
        
        <!-- 静态工厂实例化 class为工厂类 factory-method为静态工厂方法  -->
        <bean id="demo2" class="com.oak.junit.day01.DemoBeanFactory" 
        factory-method="staticDemoBean"></bean>
    </beans>

    测试:

        @Test
        public void testCtx() {
            //实例化Spring容器
            ApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml"); 
            //取出demo1
            Demo demo1=ctx.getBean("demo1",Demo.class);
            System.out.println(demo1);
            
            //取出demo2
            Demo demo2=ctx.getBean("demo2",Demo.class);
            System.out.println(demo2);
        }

    3)实例工厂方法是实例化

    工厂类中加入实例工厂方法:

    public class Demo {
        private String name;
        //getter和setter方法略
    }
    public class DemoBeanFactory {
        //静态工厂方法-返回一个Demo实例
        public static Demo staticDemoBean(){
            return new Demo();
        }
        //实例工厂方法-返回一个Demo实例
        public Demo constructorDemoBean(){
            return new Demo();
        }
    }
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd">
        <!-- 构造器实例化 -->
        <bean id="demo1" class="com.oak.junit.day01.Demo"></bean>
        
        <!-- 静态工厂实例化 class为工厂类 factory-method为静态工厂方法  -->
        <bean id="demo2" class="com.oak.junit.day01.DemoBeanFactory" 
        factory-method="staticDemoBean"></bean>
        
        <!-- 先实例化工厂类 -->
        <bean id="demoBeanFactory" class="com.oak.junit.day01.DemoBeanFactory"></bean>
        <!-- 实例工厂实例化 class为工厂类 factory-bean指定工厂类  factory-method为实例工厂方法  -->
        <bean id="demo3" factory-bean="demoBeanFactory" 
        factory-method="constructorDemoBean"></bean>
    </beans>

    测试:

    @Test
            public void testCtx() {
                //实例化Spring容器
                ApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml"); 
                //取出demo1
                Demo demo1=ctx.getBean("demo1",Demo.class);
                System.out.println(demo1);
                
                //取出demo2
                Demo demo2=ctx.getBean("demo2",Demo.class);
                System.out.println(demo2);
                
                //取出demo2
                Demo demo3=ctx.getBean("demo3",Demo.class);
                System.out.println(demo3);
            }

    文章转载至:https://blog.csdn.net/qq_34598667/article/details/83246492

  • 相关阅读:
    606. Construct String from Binary Tree
    696. Count Binary Substrings
    POJ 3255 Roadblocks (次短路)
    POJ 2823 Sliding Window (单调队列)
    POJ 1704 Georgia and Bob (博弈)
    UVa 1663 Purifying Machine (二分匹配)
    UVa 10801 Lift Hopping (Dijkstra)
    POJ 3281 Dining (网络流之最大流)
    UVa 11100 The Trip, 2007 (题意+贪心)
    UVaLive 4254 Processor (二分+优先队列)
  • 原文地址:https://www.cnblogs.com/nhdlb/p/12427276.html
Copyright © 2011-2022 走看看