Bean的实例化

bean实例化方式有3种:默认构造、静态工厂、实例工厂

默认构造

调用无参构造, 属性+setter 

User.java

package entity;

public class User {
    private int id;
    private String name;
    
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Override
    public String toString() {
        return "User [>;
    }
    
    
}

ApplicatitonContext.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 http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!-- 1.默认调用无参构造   属性+setter 
            name:真实赋值使用setter方法
            scope:作用域
    -->
     <bean id="user" class="entity.User">
        <property name="id" value="1"></property>
        <property name="name" value="zs"></property>
    </bean>  
    
    
    
</beans>

 Test.java

package test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import entity.User;


public class Test {
    
    @org.junit.Test
    public void test() {
        ApplicationContext context = new ClassPathXmlApplicationContext("ApplicatitonContext.xml");
        User user = context.getBean("user",User.class);
        System.out.println(user);
    }
}

运行结果

二月 01, 2018 8:19:43 下午 org.springframework.context.support.AbstractApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@2a33fae0: startup date [Thu Feb 01 20:19:43 CST 2018]; root of context hierarchy
二月 01, 2018 8:19:44 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from class path resource [ApplicatitonContext.xml]
User [id=1, name=zs]

 调用有参构造      属性+有参构造

User.java

package entity;

public class User {
    private int id;
    private String name;
    
    public User(int id, String name) {
        super();
        this.id = id;
        this.name = name;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Override
    public String toString() {
        return "User [>;
    } 
}

ApplicatitonContext.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 http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!-- 2.调用有参构造      属性+有参构造
        constructor-arg:
            name:属性名称
            value:简单类型的值
            ref:引用
            
            index:参数的索引
            type:参数的类型
     -->
    <bean id="user" class="entity.User">
        <constructor-arg name="id" value="1"  ></constructor-arg>
        <constructor-arg name="name" value="lisi"></constructor-arg>
        
        <!-- <constructor-arg index="0" type="int"  value="1"></constructor-arg>
        <constructor-arg index="1" value="zs"></constructor-arg> -->
    </bean>
    
    
    
</beans>

Test.java

package test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import entity.User;


public class Test {
    
    @org.junit.Test
    public void test() {
        ApplicationContext context = new ClassPathXmlApplicationContext("ApplicatitonContext.xml");
        User user = context.getBean("user",User.class);
        System.out.println(user);
    }
}

运行结果

二月 01, 2018 8:23:39 下午 org.springframework.context.support.AbstractApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@2a33fae0: startup date [Thu Feb 01 20:23:39 CST 2018]; root of context hierarchy
二月 01, 2018 8:23:39 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from class path resource [ApplicatitonContext.xml]
User [id=1, name=lisi]

静态工厂

User.java

package entity;

public class User {
    private int id;
    private String name;
    
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Override
    public String toString() {
        return "User [>;
    }
    
    
}
View Code

相关文章:

  • 2021-11-10
  • 2021-08-16
猜你喜欢
  • 2022-02-01
  • 2021-12-04
  • 2021-07-24
  • 2021-10-23
  • 2021-12-05
  • 2021-08-13
  • 2021-09-05
相关资源
相似解决方案