文档章节

Spring学习笔记十---FactoryBean

jimyao
 jimyao
发布于 2016/03/06 17:31
字数 231
阅读 51
收藏 1

FactoryBean
实现FactoryBean接口

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

    <!-- class指向factoryBean的全类名
    property设置factoryBean的属性
    返回时FactoryBean的getObject方法
    -->
    <bean id="car" class="fb.CarFactoryBean">
        <property name="brand" value="BMW"></property>
    </bean>
</beans>
package fb;

import org.springframework.beans.factory.FactoryBean;

public class CarFactoryBean implements FactoryBean<Car>{

    private String brand;

    public CarFactoryBean() {

    }

    public CarFactoryBean(String brand) {
        this.brand = brand;
    }

    public String getBrand(){
        return this.brand;
    }


    public void setBrand(String name) {
        this.brand = name;
    }
    //返回bean的实例
    @Override
    public Car getObject() throws Exception {
        return new Car(this.brand, 200000);
    }

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

    @Override
    public boolean isSingleton() {
        return true;
    }
}
package fb;

public class Car {
    private String brand;
    private double price;

    public Car() {
    }

    public Car(String brand, double price) {
        this.brand = brand;
        this.price = price;
    }

    public String getBrand() {
        return brand;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

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


    @Override
    public String toString() {
        return "Car{" +
                "brand='" + brand + '\'' +
                ", price=" + price +
                '}';
    }
}
package fb;

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


public class Main {
    public static void main(String[] args) {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("fb//FactoryBean.xml");
        Car car = (Car)ctx.getBean("car");
        System.out.println(car);
    }
}


© 著作权归作者所有

jimyao
粉丝 17
博文 66
码字总数 27856
作品 0
朝阳
私信 提问
Spring拓展接口之FactoryBean,我们来看看其源码实现

是什么 FactoryBean的源码比较简单,大家可以细读下其注释,我做了简单的如下翻译 /** 实现此接口的bean不能用作普通bean。此bean暴露的对象是通过getObject()创建的对象,而不是它自身 */pu...

java菜分享
03/25
10
0
Spring BeanFactory和FactoryBean

Spring BeanFactory和FactoryBean 1、BeanFactory BeanFactory定义了 IOC 容器的最基本形式,并提供了 IOC 容器应遵守的的最基本的接口,也就是 Spring IOC所遵守的最底层和最基本的编程规范...

秋风醉了
2018/04/16
90
0
Spring的FactoryBean

首先我们要知道Spring就是一个大的Bean容器池,用户通过简单的配置,让Spring帮忙实例化对象,而Spring是通过反射原理创建Bean的。 然后我们知道一般情况下我们配置Bean时使用的是类的全路径...

sunranhou
03/15
12
0
spring源码学习之整合Mybatis原理分析

https://blog.csdn.net/lihuayong/article/details/83934744 总结简述: <import resource="spring-mybatis.xml"/> 在该xml 文档下配置如下 <bean id="sqlSessionFactory" class="org.mybati......

Java搬砖工程师
03/08
7
0
Spring框架笔记(十一)——IOC容器创建bean实例的第三种方法——FactoryBean

IOC容器创建bean实例有3类方法: 1 通过bean对应实例的全类名 2 通过工厂方法,包括静态工厂和实例工厂 3 实现 FactoryBean 接口在 Spring IOC 容器中配置 Bean 今天我们介绍这第三种方法——...

HappyBKs
2015/07/21
624
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql-connector-java升级到8.0后保存时间到数据库出现了时差

在一个新项目中用到了新版的mysql jdbc 驱动 <dependency>     <groupId>mysql</groupId>     <artifactId>mysql-connector-java</artifactId>     <version>8.0.18</version> ......

ValSong
今天
5
0
Spring Boot 如何部署到 Linux 中的服务

打包完成后的 Spring Boot 程序如何部署到 Linux 上的服务? 你可以参考官方的有关部署 Spring Boot 为 Linux 服务的文档。 文档链接如下: https://docs.ossez.com/spring-boot-docs/docs/r...

honeymoose
今天
6
0
Spring Boot 2 实战:使用 Spring Boot Admin 监控你的应用

1. 前言 生产上对 Web 应用 的监控是十分必要的。我们可以近乎实时来对应用的健康、性能等其他指标进行监控来及时应对一些突发情况。避免一些故障的发生。对于 Spring Boot 应用来说我们可以...

码农小胖哥
今天
9
0
ZetCode 教程翻译计划正式启动 | ApacheCN

原文:ZetCode 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。 ApacheCN 学习资源 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 ...

ApacheCN_飞龙
今天
5
0
CSS定位

CSS定位 relative相对定位 absolute绝对定位 fixed和sticky及zIndex relative相对定位 position特性:css position属性用于指定一个元素在文档中的定位方式。top、right、bottom、left属性则...

studywin
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部