zoukankan      html  css  js  c++  java
  • IOC创建对象的几种方式

    接上一篇IOC入门

    IOC创建对象的几种方式

    1)调用无参数构造器

    2)带参数构造器

    3)工厂创建对象

      工厂类:静态方法创建对象

      工厂类:非静态方法创建对象

    1、对之前的User类进行一些修改,加上一个无参数构造器和一个带参数构造器

        public User(){
            super();
            System.out.println("无参数构造器");
        }
        
        public User(int id, String name){
            System.out.println("带参数构造器");
            this.id = id;
            this.name = name;
        }    

    1.1、调用无参数构造器创建对象

    <bean id="user" class="com.isoftstone.bean.User"></bean> <!--无参数-->
        @Test
        public void testIOC(){
            //创建容器对象
            ApplicationContext ac = new ClassPathXmlApplicationContext("com/isoftstone/xml/applicationContext.xml");
            //获取容器中的对象
            User user = (User)ac.getBean("user");
            
        }
    //输出"无参数构造器"

    1.2、调用有参数构造器创建对象

    <!-- 调用带参数构造器  --> <!--方法1-->
        <bean id="user" class="com.isoftstone.bean.User">
            <constructor-arg value="100" index="0" type="int" ></constructor-arg>
            <constructor-arg value="StanLong" index="1" type="java.lang.String"></constructor-arg>
        </bean> 
    
    
    <!--方法二 依赖参数--> <bean id="str" class="java.lang.String"> <constructor-arg value="StanLong"></constructor-arg> </bean> <bean id="user" class="com.isoftstone.bean.User"> <constructor-arg index="0" type="int" value="100" ></constructor-arg> <constructor-arg index="1" type="java.lang.String" ref="str"></constructor-arg>
    </bean>
        @Test
        public void testIOC(){
            //创建容器对象
            ApplicationContext ac = new ClassPathXmlApplicationContext("com/isoftstone/xml/applicationContext.xml");
            //获取容器中的对象
            User user = (User)ac.getBean("user");
            
            System.out.println(user.getId());
            System.out.println(user.getName());
            
        }

    //输出"带参数构造器 100  StanLong"

    1.3、通过工厂类创建对象

    //先创建一个工厂类
    //
    工厂类 public class ObjectFactory { //实例方法创建对象 public User getInstance(){ return new User(100, "调用实例方法"); } //静态方法创建对象 public static User getStaticInstance(){ return new User(101, "调用静态方法"); } }

    1.3.1 实例方法

    <!-- 工厂类创建对象 -->
        <!-- #实例方法 -->
        <!-- 先创建工厂 -->
        <bean id="factory" class="com.isoftstone.factory.ObjectFactory">
        </bean>
       <!-- 再创建User对象、用factory实例方法 -->
        <bean id="user" factory-bean="factory" factory-method="getInstance">
        </bean>
      @Test
        public void testIOC(){
            //创建容器对象
            ApplicationContext ac = new ClassPathXmlApplicationContext("com/isoftstone/xml/applicationContext.xml");
            //获取容器中的对象
            User user = (User)ac.getBean("user");
            
            System.out.println(user.getId());
            System.out.println(user.getName());
            
        }
    
    //输出"带参数构造器    100  调用实例方法"

    1.3.2 静态方法

    <!-- #工厂类的静态方法 -->
        <bean id="user" class="com.isoftstone.factory.ObjectFactory" factory-method="getStaticInstance">
        </bean>
      @Test
        public void testIOC(){
            //创建容器对象
            ApplicationContext ac = new ClassPathXmlApplicationContext("com/isoftstone/xml/applicationContext.xml");
            //获取容器中的对象
            User user = (User)ac.getBean("user");
            
            System.out.println(user.getId());
            System.out.println(user.getName());
            
        }
    
    //输出"带参数构造器    101  调用静态方法"
  • 相关阅读:
    在Selenium自动化中查找损坏的链接
    WebDriverManager
    在TestNG中重试失败的测试
    算法:汉诺塔
    Java 多线程
    spring ioc原理(看完后大家可以自己写一个spring)
    Apache与Nginx的区别
    Apache与Nginx的区分比较
    Java 设计模式
    Java 理论与实践: 正确使用 Volatile 变量
  • 原文地址:https://www.cnblogs.com/StanLong/p/6918279.html
Copyright © 2011-2022 走看看