Spring IOC创建对象

4. IOC创建对象的方式

  1. 使用无参构造创建,默认

    User.java 类

    package com.peng.pojo;
    
    public class User {
        private String name;
    
        public User(){
            System.out.println("User无参构造");
        }
    
        public User(String name) {
            this.name = name;
            System.out.println("User有参构造");
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public void show(){
            System.out.println("name="+name);
        }
    }
    

    beans.xml

    <?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
            https://www.springframework.org/schema/beans/spring-beans.xsd">
        <bean id="user" class="com.peng.pojo.User">
            <property name="name" value="peng"/>
        </bean>
    </beans>
    

    MyTest.java 测试类

    import com.peng.pojo.User;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class MyTest {
        public static void main(String[] args) {
            ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
    
            User user = (User)context.getBean("user");
            user.show();
        }
    }
    

    输出

    User无参构造
    name=peng
    
  2. 有参构造创建对象(三种方式)

    <beans>    
    	<!--有参构造的三种方法-->
    
        <!--1.下标赋值-->
        <bean id="user" class="com.peng.pojo.User">
            <constructor-arg index="0" value="peng"/>
        </bean>
    
        <!--2.通过类型创建不建议使用-->
        <bean id="user" class="com.peng.pojo.User">
            <constructor-arg type="java.lang.String" value="peng"/>
        </bean>
    
        <!--3.直接通过参数名来设置-->
        <bean id="user" class="com.peng.pojo.User">
            <constructor-arg name="name" value="peng"/>
        </bean>
    </beans>
    
  3. Spring 容器执行的时候,不管测试类中是否 get,所有的类都已经被实例化了,什么时候用什么时候 get。

    User user = (User)context.getBean("user");
    User user2 = (User)context.getBean("user");
    System.out.println(user == user2); //输出为true
    

    Spring 中只有一个实例!

posted @ 2020-07-10 14:10  鹏懿如斯  阅读(471)  评论(0编辑  收藏  举报