Spring中Bean的配置方式之FactoryBean

  Spring 中有两种类型的 Bean, 一种是普通Bean, 另一种是工厂Bean, 即FactoryBean.
  工厂 Bean 跟普通Bean不同, 其返回的对象不是指定类的一个实例, 其返回的是该工厂 Bean 的 getObject 方法所返回的对象

相关代码:

Car.java

private String brand;

private double price;

CarFactoryBean.java

public class CarFactoryBean implements FactoryBean<Car>{

    private String brand;

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

    //返回bean的对象
    @Override
    public Car getObject() throws Exception {

        return new Car(brand,500000);
    }
    //返回bean的类型
    @Override
    public Class<?> getObjectType() {

        return Car.class;
    }

    @Override
    public boolean isSingleton() {

        return true;
    }
}

bean-factorybean.xml

<!--
        通过FactoryBean来配置bean的实例
        class:指向FactoryBean的全类名
        property:配置的时FactoryBean的属性
                但实际返回的实例却是FactoryBean的getObject()方法的实例
     -->
<bean id="car" class="com.yslf.factorybean.CarFactoryBean">
    <property name="brand" value="BMW"></property>
</bean>
时间: 2024-11-08 18:58:06

Spring中Bean的配置方式之FactoryBean的相关文章

Spring中Bean的配置方式之通过工厂方法

通过调用静态工厂方法创建Bean 调用静态工厂方法创建 Bean是将对象创建的过程封装到静态方法中. 当客户端需要对象时, 只需要简单地调用静态方法, 而不同关心创建对象的细节. 要声明通过静态方法创建的 Bean, 需要在 Bean 的 class 属性里指定拥有该工厂的方法的类, 同时在 factory-method 属性里指定工厂方法的名称. 最后, 使用 <constrctor-arg> 元素为该方法传递方法参数. 相关代码: Car.java private String brand

Spring学习系列之——第三章:Spring中Bean的配置(一)

Spring的配置形式有两种:基于XML配置和基于注解配置. Bean的配置方式有以下几种: 通过全类名,即通过反射的方式: 通过工厂方法,有静态工厂方法和实例工厂方法: 通过FactoryBean配置: 通过XML文件配置bean 本篇文章将按照下面的目录来说明基于XML的方式配置bean JavaBean的创建 通过XML配置的方式来配置bean XMLbean的配置: spring的依赖注入的方式 属性注入 构造器注入 工厂方法注入(很少使用) 测试方法 IoC容器的实例化: Applic

Spring中Bean的配置

原创作品,可以转载,但是请标注出处地址http://www.cnblogs.com/V1haoge/p/5859556.html 1.Bean的配置一般都在XML文件中进行配置 2.Bean相关包为:org.springframework.beans和org.springframework.context 3.spring的Bean管理的实现是依靠大量的反射来实现的. 4.Bean定义配置 4.1 Bean标签 ?id属性:用于指定Bean的名称,在Bean被依赖时使用,在获取Bean时使用等

《Java从入门到放弃》入门篇:spring中AOP的配置方式

spring中最核心的两个东东,一个IOC,一个AOP. AOP(Aspect-OrientedProgramming)面向方面编程,也可以叫面向切面编程. 从一个新人的角度可以这样来理解:一般软件中的功能,我们可以分为两大类,一类是业务功能,一类是系统功能. 业务功能是指这个软件必须要用到的,没有的话客户就不给钱的.比如淘宝APP,如果你只能在上面浏览商品而不能购物,那就说明业务功能太监了···. 系统功能主要是指与业务无关,没有这块内容也不影响软件使用的.比如日志管理.权限处理等. AOP主

Spring 中使用XML配置方式和使用注解方式实现DI

Spring容器给我们提供了很好的环境,我们只关注主要业务即可,其他的无需关注太多.今天刚学的DI DI(Dependency Injection):依赖注入 使用XML配置文件完成依赖注入 1.1普通属性的注入 创建实体类: package cn.spring.entity; import java.io.Serializable; /** * Created by accp on 2017/3/23. */ public class User implements Serializable

Spring中Bean的不同配置方式

Bean的配置方式一共分为三种: 1.基于XML(适用于第三方类库,无法在类中写注解以及写命名空间的配置等情况) 2.基于注解(适用于大部分情况) 3.基于Java类 以下是三种不同情况的配置方式   基于XML 基于注解 基于Java类配置 Bean 的定义 <bean class="com.gin.UserName" /> @Component(或衍生@Repositry.@Service及@Controller) public class UserName {...}

Spring 简化装配Bean的配置方式

简化配置方式 Spring 为字面值.引用 Bean 和集合都提供了简化的配置方式.如果没有用到完整配置格式的特殊功能,用户大可使用简化的配置方式.下面分别为上面提及的配置内容给出简化前和简化后的版本. 1.字面值属性   简化前 简化后 字面值属性 <property name="maxSpeed"> <value>200</value></property> <property name="maxSpeed"

Spring框架bean的配置(2):SpEL:引用 Bean、属性和方法。。。

1.SpEL,实现 Person类,其属性如下,其get,set,tostrong方法就不写了 private String name; private Car car; private String city;//city属性是引用了Address中city的属性 private String info;//根据car的price属性来确定info,price大于30万,不大于30万 car类,其属性如下,set,get,tostring方法就不写了 private String brand;

JAVA面试题:Spring中bean的生命周期

Spring 中bean 的生命周期短暂吗? 在spring中,从BeanFactory或ApplicationContext取得的实例为Singleton,也就是预设为每一个Bean的别名只能维持一个实例,而不是每次都产生一个新的对象使用Singleton模式产生单一实例,对单线程的程序说并不会有什么问题,但对于多线程的程序,就必须注意安全(Thread-safe)的议题,防止多个线程同时存取共享资源所引发的数据不同步问题. 然而在spring中 可以设定每次从BeanFactory或Appl