spring中factory-method
⼀、简介
这⾥介绍下在spring中,通过factory-methon属性创建bean。
回顾下,在Spring中,创建bean对象的⽅式有:
直接在xml配置⽂件中,通过bean标签创建对象;
通过注解如@Bean、@Service等创建对象;
通过FactoryBean⼯⼚类创建对象(详情请查看以前写的另⼀篇博客);
通过factory-methon属性创建对象(本⽂将介绍的)
⼆、factory-method属性创建对象
通过factory-method属性有两种⽅式,⼀种是静态的(⽅法必须是静态的),另⼀种是动态的。使⽤上不复杂,这⾥直接上代码,解释请看注释。
2.1 定义类Stu.java
public class Stu {
public String stuId;
public Stu(String stuId) {
this.stuId = stuId;
}
}
2.2 定义⼯⼚类StuFactory.java
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Stream;
public class StuFactory {
static Map<String,Stu> stuMap = new HashMap<>();
static{
//初始化
Stream.iterate(1,n->n+1).limit(5).map(String::valueOf).forEach(t-> stuMap.put(t, new Stu(t)));
}
//静态创建类,⽅法必须是静态(static修饰)
public static Stu getStaticStu(String stuId){spring framework版本
(stuId);
}
//动态创建类
public Stu getDynamicStu(String stuId){
return new Stu(stuId);
}
2.3 定义spring配置⽂件l
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="/schema/beans"
xmlns:xsi="/2001/XMLSchema-instance"
xsi:schemaLocation="/schema/beans /schema/beans/spring-beans.xsd">      <!--静态获取对象-->
<bean id="staticStu" class="com.dragon.study.study20190618.spring.springFactoryMethod.StuFactory"
factory-method="getStaticStu">
<!--传⼊getStaticStu⽅法的参数-->
<constructor-arg value="1"/>
</bean>
class="com.dragon.study.study20190618.spring.springFactoryMethod.StuFactory"/>
<!--动态获取对象-->
<bean id="dynamicStu" factory-bean="stuFactory" factory-method="getDynamicStu">      <!--传⼊getDynamicStu⽅法的参数-->
<constructor-arg value="11"/></bean>
2.4 使⽤
public class SpringFactoryMethod {
public static void main(String[] args) {
ApplicationContext ac = new ClassPathXmlApplicationContext("l");
//获取静态Bean
Stu staticStu = Bean("staticStu"));
//获取动态Bean
Stu dynamicStu =Bean("dynamicStu"));

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。