使用lookup-method:
一、实体类:
package cn.edu.tju.domain2;
import java.time.LocalDateTime;
import java.util.Map;
public class Command {
private Map<String, Object> state;
public Map<String, Object> getState() {
return state;
}
public void setState(Map<String, Object> state) {
this.state = state;
}
public Object execute(){
System.out.println(LocalDateTime.now().toLocalTime());
return null;
}
}
package cn.edu.tju.domain2;
import java.util.HashMap;
public abstract class CommandManager {
public Object process(Object commandState) {
// grab a new instance of the appropriate Command interface
Command command = createCommand();
System.out.println("hash: " + command.hashCode());
// set the state on the (hopefully brand new) Command instance
command.setState(new HashMap<String, Object>());
return command.execute();
}
// okay... but where is the implementation of this method?
protected abstract Command createCommand();
}
二、配置文件:文章来源:https://www.toymoban.com/news/detail-606925.html
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
">
<bean class="cn.edu.tju.domain2.CommandManager" id="commandManager" >
<lookup-method bean="command" name="createCommand"/>
</bean>
<bean class="cn.edu.tju.domain2.Command" id="command" scope="prototype" >
</bean>
</beans>
三、主类:文章来源地址https://www.toymoban.com/news/detail-606925.html
package cn.edu.tju;
import cn.edu.tju.domain2.CommandManager;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.util.HashMap;
public class TestDiffScope2 {
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("test8.xml","test2.xml");
CommandManager commandManager = context.getBean("commandManager", CommandManager.class);
commandManager.process(new HashMap<String, Object>());
CommandManager commandManager2 = context.getBean("commandManager", CommandManager.class);
commandManager2.process(new HashMap<>());
}
}
到了这里,关于Spring 6.0官方文档示例(23): singleton类型的bean和prototype类型的bean协同工作的方法(二)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!