spring三种实例化bean的方式

Posted

tags:

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

1构造函数实例化

2静态工厂方法实例化

3实例工厂方法实例化

service接口:

package service;

public interface PersonService {

    public void save();

}

PersonServiceBean:

package service.impl;

import service.PersonService;

public class PersonServiceBean implements PersonService {

    public void save(){
        System.out.println("我是save()方法");
    }
}

PersonServiceBeanFactory:

package service.impl;

public class PersonServiceBeanFactory {
    /*
     * 静态工厂方法
     */
    public static PersonServiceBean createPersonServiceBean(){
        return new PersonServiceBean();
    }
    /*
     * 实例工厂方法
     */
    public  PersonServiceBean createPersonServiceBean2(){
        return new PersonServiceBean();
    }
}

applicationContext.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-3.1.xsd">
    
        <!-- 默认构造方法 -->
        <bean id = "personService" class = "service.impl.PersonServiceBean"></bean>
        
        <!-- 静态工厂方式 -->
        <bean id = "personService2" class = "service.impl.PersonServiceBeanFactory" 
                               factory-method = "createPersonServiceBean"></bean>
                               
        <!-- 实例工厂方式 -->
         <bean id = "personServiceFactory" class = "service.impl.PersonServiceBeanFactory"></bean>
        <bean id = "personService3" factory-bean = "personServiceFactory" 
                               factory-method = "createPersonServiceBean2"></bean>
   
</beans>

测试类:

package test;

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

import service.PersonService;
import service.impl.PersonServiceBean;

/**
* @ClassName: FirstTest 
* @Description: 测试实spring三种实例化方式
* @author 无名
* @date 2016-02-10
* @version 1.0
 */
public class FirstTest
{
    @Test
    public void testCreateBean(){
        String conf = "applicationContext.xml";
        ApplicationContext ac = new ClassPathXmlApplicationContext(conf);
        
        //利用构造器来实例化
        PersonService ps = ac.getBean("personService",PersonServiceBean.class);
        ps.save();
        
        //利用静态工厂方法
        PersonService ps02 = (PersonService)ac.getBean("personService2");
        ps02.save();
        
        //实例工厂方法
        PersonService ps03 = (PersonService)ac.getBean("personService3");
        ps03.save();
        
    }
}

 

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

Spring bean管理器 bean实例化的三种方式

Spring实例化bean的三种方式

spring三种实例化bean的方式

spring学习(02)之bean实例化的三种方式

Spring三种实例化Bean的方式

Spring bean三种创建方式