我读到,在基于XML的Spring配置中bean可以继承工厂方法。
我尝试实现了它:
控制器接口:
public interface Controller {
String method();
}
ControllerFactory类:
public class ControllerFactory {
public Controller getController(String controllerName){
switch(controllerName){
case "OtherController":
return new OtherController();
case "SampleController":
return new SampleController();
default:
throw new IllegalArgumentException("Wrong controller name.");
}
}
}
SampleController实现:
public class SampleController implements Controller {
@Override
public String method() {
return "SampleController";
}
}
public class OtherController implements Controller {
@Override
public String method() {
return "OtherController";
}
}
<!--factory method inheritance -->
<bean id="controllerFactory" class="factory.ControllerFactory"/>
<bean id="parentController" abstract="true" factory-bean="controllerFactory" factory-method="getController"/>
<bean id="otherController" parent="parentController">
<constructor-arg index="0" value="OtherController"/>
</bean>
No matching constructor found in class 'Controller'
如何更改它以使工厂方法bean继承正确实现?
将工厂方法配置复制到子bean可以正常工作:
<bean id="otherController" parent="parentController" factory-bean="controllerFactory" factory-method="getController">
<constructor-arg index="0" value="OtherController"/>
</bean>
更改id为parentcontroller
的bean,如下所示:
。
试试这个也许能行。
我是新泉。在Bean标记中,我发现了factory-method和factory-method和factory-bean之间有什么区别? 我正在使用factory-method调用我的getInstance静态方法来创建singleton对象。 工厂豆是用来做什么的? 对于给定的答复,我所理解的是 Factory-method用于调用静态方法在同一个bean类中创建对象。 Factory-bean
代码直戳: https://github.com/faif/python-patterns 创建型模式 工厂方法 实例 -> 类 -> 类工厂 抽象工厂 简单来说就是把一些具有相同方法的类再进行封装,抽象共同的方法以供调用.是工厂方法的进阶版本. 实例 -> 类 -> 类工厂 -> 抽象工厂 惰性初始化 Lazy evaluation 这个Python里可以使用@property实现,就是当调用的
工厂方法,就是通过一个"虚拟"构造方法,供调用者获取特定的实例. 至于返回的是什么实例, 得看环境和传入的参数,及 方法内的业务逻辑了. 例如, 希望在生产环境用Product目录下的配置文件,开发环境用dev目录下的配置文件 使用Iocbean的factory 通过IocBean注解内的factory参数,可以自定义工厂类及工厂method factory参数的规则是, 以井号分隔,井号之前的是
工程配置方法 本章节叙述了在一个项目工程需要用到的组件以及器配置,包括了 Tomcat安装与配置、SpringMVC 的配置、Dubbo 的安装配置以及其运行过程。 这章节中 将带领大家一步步从零 搭建一个 web 工程 并使其 在电脑上run起来,之后将其改写成SpringMVC 的工程,成功之后 我们再次将SpringMVC 通过 Dubbo 将项目变为一个服务消费者和服务提供者,并向大家展示
Okie正在Spring 3.1.4上运行一些第三方代码,我无法更改。代码还使用在运行时动态注入类型。这种类型属于原型范围。所有这些都是基于服务对象创建的
您可以用Spring以各种方式创建-对象。 一种方法是将-注释添加到-声明中,如下所示: 它将从-类创建一个bean,然后使用其setter用配置文件中的值填充其成员。 您也可以直接在-Object上进行注释,如下所示: 通过将放置到任何加载的配置来创建它。 还可以使用 但是如何结合第一个@Bean方法创建不可变的ConfigurationProperties呢? 我尝试过这样的东西: 它告诉我,