本文共 1684 字,大约阅读时间需要 5 分钟。
在Spring配置Bean时,工厂方法是一个非常实用的配置方式。工厂类通过其方法返回特定条件下的Bean实例。这种方法特别适合需要灵活配置Bean的场景。工厂又可以分为静态工厂和实例工厂两种类型。本文将分别介绍两种工厂的使用方法。
静态工厂通过其静态方法返回Bean实例。这种方法适用于需要多个静态Bean实例的情景,这些实例可以通过工厂的静态方法获取。关键在于,只有一个工厂实例,但可以调用多个静态方法获取不同的Bean实例。
public class MyStaticFactory { private static Mapcars = 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,提升Spring应用的配置能力。
转载地址:http://wpucz.baihongyu.com/