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

  • 相关阅读:
    NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
    QOpenGLShaderProgram: could not create shader program
    ubuntu loading initial ramdisk 卡住
    ubuntu 下pip install sasl报错fatal error: sasl/sasl.h: No such file or directory
    ImportError: No module named managers
    python docker 多进程提供 稳定tensorflow gpu 线上服务
    侧脸生成正脸概论与精析(一)Global and Local Perception GAN
    pytorch安装 caffe2 安装:git 慢 caffe2 cannot find -lopencv_dep_cudart ,undefined reference to 'pthread_create'
    undefined symbol: PyFPE_jbuf
    Metasploit后渗透模块开发
  • 原文地址:https://www.cnblogs.com/nhdlb/p/12427276.html
Copyright © 2011-2022 走看看