Spring通过工厂方式配置bean

简介: Spring通过工厂方式配置bean

静态工厂方法



静态工厂类

package factory;
import java.util.HashMap;
import java.util.Map;
/*
 * 静态工厂方法:直接调用某一个的静态方法就可以返回bean实例
 */
public class StaticCarFactory {
    private static Map<String,Car> cars=new HashMap<String,Car>();
    static {
        cars.put("aodi", new Car("aodi",3000));
        cars.put("ford", new Car("ford",20000));
    }
    //静态方法
    public static Car getCar(String name) {
        return cars.get(name);
    }
}


实体类

package factory;
public class Car {
    private String brand;
    private int price;
    public int getPrice() {
        return price;
    }
    public void setPrice(int price) {
        this.price = price;
    }
    public String getBrand() {
        return brand;
    }
    public void setBrand(String brand) {
        System.out.println("setBrand...");
        this.brand = brand;
    }
    public Car() {
        System.out.println("car Constructor...");
    }
    public void init() {
        System.out.println("init...");
    }
    public void destory() {
        System.out.println("destroy");
    }
    public Car(String brand,int price) {
        this.brand=brand;
        this.price=price;
    }
    @Override
    public String toString() {
        return "Car [brand=" + brand + ", price=" + price + "]";
    }
}


配置文件

<?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.2.xsd">
    <!-- 通过静态方法来配置bean,注意不是配置静态工厂实例方法 而是配置bean实例 -->
    <!-- class属性:指向静态工厂方法的全类名
    factory-method:指向静态工厂方法的名字
    constructor-arg:如果工厂方法需要传入参数,则使用constructor-arg来配置参数
     -->
    <bean id="car1" class="factory.StaticCarFactory"
        factory-method="getCar"><constructor-arg value="aodi"></constructor-arg>
        </bean>
</beans>


主方法

package factory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
    public static void main(String[] args) {
        ApplicationContext ac=new ClassPathXmlApplicationContext("beans-factory.xml");
        Car car=(Car) ac.getBean("car1");
        System.out.println(car);
    }
}



相关文章
|
16天前
|
存储 Java 数据安全/隐私保护
|
1天前
|
安全 Java 开发者
深入理解Spring Boot配置绑定及其实战应用
【4月更文挑战第10天】本文详细探讨了Spring Boot中配置绑定的核心概念,并结合实战示例,展示了如何在项目中有效地使用这些技术来管理和绑定配置属性。
10 1
|
3天前
|
Java Spring
Spring文件配置以及获取
Spring文件配置以及获取
10 0
|
9天前
|
Java 微服务 Spring
Spring Boot中获取配置参数的几种方法
Spring Boot中获取配置参数的几种方法
21 2
|
11天前
|
消息中间件 安全 Java
在Spring Bean中,如何通过Java配置类定义Bean?
【4月更文挑战第30天】在Spring Bean中,如何通过Java配置类定义Bean?
20 1
|
13天前
|
Java 开发者 Spring
Spring Boot中的资源文件属性配置
【4月更文挑战第28天】在Spring Boot应用程序中,配置文件是管理应用程序行为的重要组成部分。资源文件属性配置允许开发者在不重新编译代码的情况下,对应用程序进行灵活地配置和调整。本篇博客将介绍Spring Boot中资源文件属性配置的基本概念,并通过实际示例展示如何利用这一功能。
23 1
|
14天前
|
前端开发 Java 数据格式
【Spring系列笔记】定义Bean的方式
在Spring Boot应用程序中,定义Bean是非常常见的操作,它是构建应用程序的基础。Spring Boot提供了多种方式来定义Bean,每种方式都有其适用的场景和优势。
32 2
|
16天前
|
XML 人工智能 Java
Spring Bean名称生成规则(含源码解析、自定义Spring Bean名称方式)
Spring Bean名称生成规则(含源码解析、自定义Spring Bean名称方式)
|
17天前
|
安全 Java API
Spring工厂API与原理
Spring工厂API与原理
35 10
|
17天前
|
Java Spring 容器
如何用基于 Java 配置的方式配置 Spring?
如何用基于 Java 配置的方式配置 Spring?