博客
关于我
Spring通过工厂方法配置Bean
阅读量:478 次
发布时间:2019-03-07

本文共 1684 字,大约阅读时间需要 5 分钟。

Spring配置Bean的工厂方法

前言

在Spring配置Bean时,工厂方法是一个非常实用的配置方式。工厂类通过其方法返回特定条件下的Bean实例。这种方法特别适合需要灵活配置Bean的场景。工厂又可以分为静态工厂和实例工厂两种类型。本文将分别介绍两种工厂的使用方法。

静态工厂

静态工厂的定义

静态工厂通过其静态方法返回Bean实例。这种方法适用于需要多个静态Bean实例的情景,这些实例可以通过工厂的静态方法获取。关键在于,只有一个工厂实例,但可以调用多个静态方法获取不同的Bean实例。

public class MyStaticFactory {    private static Map
cars = new HashMap<>(); static { cars.put("大众", new Car("大众", 10000)); cars.put("奥迪", new Car("奥迪", 40000)); } public static Car getCar(String name) { return cars.get(name); }}

静态工厂的配置

在Spring配置中,使用静态工厂时,只需配置一个bean,指定工厂类及其对应的方法,并传入所需的参数。需要注意的是,这里通过constructor-arg指定值,值会被传递给工厂方法。如果工厂方法不需要参数,可以省略这一部分。

测试

通过上述配置,可以从Spring上下文中获取到一个Car实例。以下是测试代码:

public static void main(String[] args) {    ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");    Car car = (Car) context.getBean("car");    System.out.println(car);}

测试输出如下:

Car{name='奥迪', price=40000}

实例工厂

实例工厂的定义

实例工厂是通过实例方法返回Bean实例的工厂。与静态工厂不同,实例工厂是一个对象,其方法可以根据不同的参数返回不同的Bean实例。使用实例工厂需要先配置工厂实例,再根据需要调用工厂的实例方法获取Bean。

配置实例工厂

实例工厂的配置相对简单,只需配置一个bean,指定工厂的类名和id。通常,我们会为工厂创建一个单独的bean,方便后续的引用和管理。

测试

通过上述配置,可以从Spring上下文中获取到另一个Car实例。以下是测试代码:

public static void main(String[] args) {    ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");    Car car = (Car) context.getBean("car2");    System.out.println(car);}

测试输出如下:

Car{name='大众', price=10000}

工厂的选择与使用场景

在使用工厂配置Bean时,需要根据自身需求选择合适的工厂类型:

  • 静态工厂:适用于需要多个静态Bean实例但不需要工厂实例本身的场景。
  • 实例工厂:适用于需要通过工厂实例方法获取Bean实例且工厂本身需要作为Spring的Bean的场景。
  • 通过合理使用这两种工厂类型,可以灵活配置各类Bean,提升Spring应用的配置能力。

    转载地址:http://wpucz.baihongyu.com/

    你可能感兴趣的文章
    Linux系统调用过程
    查看>>
    stm32 uv5打开uv4工程错误
    查看>>
    mysql怎么终止一个事务_MySql 中游标,事务,终止存储过程方法总结
    查看>>
    SmartRefreshLayout 上拉加载下拉刷新
    查看>>
    app:processDevDebugResources
    查看>>
    最基础的urllib.request.urlopen()基本使用
    查看>>
    C# 异常
    查看>>
    vs 设置静态库输出路径
    查看>>
    strlen sizeof 快
    查看>>
    c++模板定义malloc
    查看>>
    【Java-27】Java常见错误记录
    查看>>
    andriod 开发错误记录
    查看>>
    生成树协议(二)
    查看>>
    将字符串中的特定字符替换为其他字符
    查看>>
    创建一个简单的SpingBoot项目,并且部署到linux上运行
    查看>>
    Python之Numpy库的简单介绍(一)
    查看>>
    【Linux】程序地址空间,分段式、分页式存储理解
    查看>>
    YOLOv5超详细的入门级教程(训练篇)(五)——远程服务器上后台训练网络
    查看>>
    mysql8.0及以上在my.cnf设置sql_mode之后mysql无法启动
    查看>>
    C语言编译错误列表
    查看>>