spring-bean实例化三种方式

Posted zyfadmin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring-bean实例化三种方式相关的知识,希望对你有一定的参考价值。

在spring中,bean的示例化有三种方式。

 1、使用类的无参构造函数创建

2、使用静态工厂方式创建

3、使用实例化工厂方式创建。

技术分享图片

 

 具体代码如下

静态工厂方式:

Bean2.java

技术分享图片
package cn.itcast.bean;

public class Bean2 {
    
    public void add(){
        System.out.println("Bean2................");
    }
}
View Code

Bean2Factory.java

技术分享图片
package cn.itcast.bean;

public class Bean2Factory {
    //静态方法,返回Bean2对象
    
    public static Bean2 getBean2(){
        return new Bean2();
    }
}
View Code

 

IoC方式:

user.java

技术分享图片
package cn.itcast.ioc;

public class User {
     
        
    public void add(){
        System.out.println("add........");
    }
    
     
}
View Code

 

实例化工厂方式:

Bean3.java

技术分享图片
package cn.itcast.bean;

public class Bean3 {

    public void add(){
        System.out.println("Bean3................");
    }
}
View Code

Bean3Factory.java

技术分享图片
package cn.itcast.bean;

public class Bean3Factory {
    public Bean3 getBean3(){
        return new Bean3();
    }
}
View Code

 

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">

  <!-- ioc入门 -->
   <bean id="user" class="cn.itcast.ioc.User"></bean>
   
   <!-- 使用静态工厂类创建对象 -->
   <bean id="Bean2" class="cn.itcast.bean.Bean2Factory" factory-method="getBean2"></bean>
   
   <!-- 使用实例工厂创建对象 -->
   <bean id="Bean3Factory" class="cn.itcast.bean.Bean3Factory"></bean>
    <bean id="Bean3" factory-bean="Bean3Factory" factory-method="getBean3"></bean>
</beans>

 

测试类:

技术分享图片
package cn.itcast.ioc;

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

import cn.itcast.bean.Bean2;
import cn.itcast.bean.Bean3;

public class TestIOC {

    @Test
    public void testUser() {

        // 1 加载spring配置文件。根据创建对象
        ApplicationContext context = new ClassPathXmlApplicationContext(
                "bean1.xml");

        
         //2 得到配置创建的文件 ioc 
        User user = (User)context.getBean("user") ;
         System.out.println(user); user.add();
         
         //使用静态工厂类创建对象
          Bean2 bean2 =(Bean2)context.getBean("Bean2");
          System.out.println(bean2);
          bean2.add() ;
 
          // 使用实例工厂创建对象
        Bean3 bean3 = (Bean3) context.getBean("Bean3");
        System.out.println(bean3);
        bean3.add();
    }
}
View Code

 

运行测试类,结果显示

技术分享图片

 

以上是关于spring-bean实例化三种方式的主要内容,如果未能解决你的问题,请参考以下文章

第二章

Spring的bean管理(XML方式)

如何用unity实现全屏/全屏窗口化/窗口化三种模式的切换

Spring-bean的自动装配

引点科技私房菜专栏之Spring-Bean生命周期和作用域以及实现方式

Spring入门到进阶 - Spring Bean管理 XML方式