美文网首页码农笔记程序员SpringFramework
spring入门--bean的三种创建方式

spring入门--bean的三种创建方式

作者: zhaoyunxing | 来源:发表于2017-12-24 01:13 被阅读229次

[ * ] 静态工程方法创建bean

[ * ] 实例工程方法创建bean

[ * ] spring的FactoryBean创建bean

静态工程方法创建bean

直接用类的静态方法就可以返回bean的实例

 public class StaticCarFactory {
   private static Map<String, Car> cars = new HashMap<String, Car>();

   static {
       cars.put("audi", new Car("audi", 20000));
       cars.put("ford", new Car("ford", 40000));
   }

   public static Car getCar(String name) {
       return cars.get(name);
   }
}
 <!-- 通过静态工程方法配置bean
    注意:不是配置静态工程方法实例,而是配置bean实例

         class 属性:指向静态工程方法全类名称
     factory-method: 指向静态工程方法
    constructor-arg:如果静态工程方法需要传入参数,这个使用constructor-arg: 配置参数

    -->
<bean id="car1"
          class="com.sunny.beans.factory.StaticCarFactory"
          factory-method="getCar">
        <constructor-arg name="name" value="audi"/>
    </bean>

静态工程方法创建bean

先创建工程本身,在调用工程的实例方法

public class InstanceCarFactory {
    private static Map<String, Car> cars;

    public InstanceCarFactory() {
        cars = new HashMap<String, Car>();

        cars.put("audi", new Car("audi", 20000));
        cars.put("ford", new Car("ford", 40000));
    }

    public Car getCar(String name) {
        return cars.get(name);
    }
}
    <!--通过实例的工程方法创建bean-->
    <!--配置工程实例-->
    <bean id="carFactory"
          class="com.sunny.beans.factory.InstanceCarFactory"/>

    <bean id="car2"
          factory-bean="carFactory"
          factory-method="getCar">
        <constructor-arg name="name" value="ford"/>
    </bean>

spring的FactoryBean创建bean

实现FactoryBean接口

public class CarFactoryBean implements FactoryBean<Car> {
    private String brand;

    public void setBrand(String brand) {
        this.brand = brand;
    }

    /**
     * @return bean对象
     * @throws Exception 异常
     */
    @Override
    public Car getObject() throws Exception {
        return new Car(brand, 40000);
    }

    /**
     * @return bean的类型
     */
    @Override
    public Class<?> getObjectType() {
        return Car.class;
    }

    /**
     * @return 是否单例
     */
    @Override
    public boolean isSingleton() {
        return true;
    }
}

    <bean id="car3"
          class="com.sunny.beans.factory.CarFactoryBean">
       <property name="brand" value="CarFactoryBean"/>
    </bean>

相关文章

  • Spring 学习笔记

    Spring_1 基本概念 Spring_2 IOC 入门示例 Spring_3 三种实例化bean的方式 Spr...

  • Spring-002-bean管理(XML文件配置)

    Bean实例化的方式 在spring里面通过配置文件创建对象 bean实例化三种方式实现使用类的无参数构造创建(重...

  • Spring学习笔记 (一)

    目录: Spring的ioc底层原理Spring入门案例Spring的bean管理(xml方式)bean标签的常用...

  • Spring创建对象

    创建对象 把一个类放入到spring容器中,该类称为bean Spring创建对象的三种方式 1、构造方法 2、静...

  • spring入门--bean的三种创建方式

    [ * ] 静态工程方法创建bean [ * ] 实例工程方法创建bean [ * ] spring的Factor...

  • Spring的bean管理(xml方式)

    Bean实例化的方式 (1)在spring里面通过配置文件创建对象(2).bean实例化三种方式实现 第一种 使用...

  • Spring目录

    Spring 入门 Spring-Bean管理 Spring快速入门 Spring-Bean管理 Spring属性...

  • 装配Bean

    声明Bean 创建Spring配置 从Spring3.0开始,Spring容器提供了两种配置Bean的方式。传统上...

  • Spring装配Bean

    spring三种方式装配bean: 自动化装配bean 借助java来进行bean装配 使用xml进行bean装配...

  • Spring使用Java Config和XML装配Bean总结

    Bean的创建 配置Spring自动扫描组件 XML的配置方式 Java Config 构造器创建bean XML...

网友评论

    本文标题:spring入门--bean的三种创建方式

    本文链接:https://www.haomeiwen.com/subject/axecgxtx.html