1. 程式人生 > 程式設計 >spring如何通過FactoryBean配置Bean

spring如何通過FactoryBean配置Bean

這篇文章主要介紹了spring如何通過FactoryBean配置Bean,文中通過示例程式碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

Car.java

package com.gong.spring.beans.factoryBean;

public class Car {
  private String name;
  private double price;
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public double getPrice() {
    return price;
  }
  public void setPrice(double price) {
    this.price = price;
  }
  public Car(String name,double price) {
    super();
    this.name = name;
    this.price = price;
  }
  @Override
  public String toString() {
    return "Car [name=" + name + ",price=" + price + "]";
  }
  
}

CarFactoryBean.java

package com.gong.spring.beans.factoryBean;

import org.springframework.beans.factory.FactoryBean;

public class CarFactoryBean implements FactoryBean<Car> {
  
  private String name;
  public void setName(String name) {
    this.name = name;
  }
  //返回Bean的物件
  @Override
  public Car getObject() throws Exception {
    // TODO Auto-generated method stub
    return new Car(name,200000);
  }
  //返回bean的型別
  @Override
  public Class<?> getObjectType() {
    // TODO Auto-generated method stub
    return Car.class;
  }
  //是否是單例
  @Override
  public boolean isSingleton() {
    // TODO Auto-generated method stub
    return true;
  }

}

beans-factoryBean.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">

  <bean id="car" class="com.gong.spring.beans.factoryBean.CarFactoryBean">
    <property name="name" value="baoma"></property>
  </bean>
</beans>

Main.java

package com.gong.spring.beans.factoryBean;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Main {
  public static void main(String[] args) {
    //1.建立spring的IOC容器物件
    ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("beans-factoryBean.xml");
    //2.從容器中獲取Bean例項
    Car car = (Car) ctx.getBean("car");
    System.out.println(car.toString());
    ctx.close();
  }
}

輸出:

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。