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

  • 相关阅读:
    Gray Code
    Search a 2D Matrix
    Find Minimum in Rotated Sorted Array
    Feign理解
    Ribbon描述
    eureka自定义instance Id
    eureka开启用户认证
    idea创建Eureka consumer入门实例
    eureka描述
    activeMq的安全机制
  • 原文地址:https://www.cnblogs.com/nhdlb/p/12427276.html
Copyright © 2011-2022 走看看