【发布时间】:2023-04-07 01:50:02
【问题描述】:
在 java 中,我想实现代理类(代理工厂 Bean),它将采用多个目标(实现相同的接口)并调用基于目标方法的配置值之一。
Dog & Cat 实现 Animal 并基于一些配置值(Y 或 N)想要调用它的实现之一。这可以使用策略来完成,但我的问题是类似的逻辑需要应用于其他实现不同接口的实现。(下面的示例我在实现 Car Interface 的 Audi 和 Benz 类下面添加)并希望根据配置选择实现.
public interface Animal
{
public void sound();
}
public class Dog implements Animal
{
public void sound()
{
System.out.print("bark");
}
}
public class Cat implements Animal
{
public void sound()
{
System.out.print("Meow");
}
}
第二个豆子:
public interface Car
{
public void make();
}
public class Audi implements Car
{
public void make()
{
System.out.print("Audi");
}
}
public class Benz implements Car
{
public void make()
{
System.out.print("Mercedes");
}
}
示例弹簧配置
<bean id "animalService" class="proxyFactoryBean">
<list>
<target id"Y". "class"="com.Dog">
<target id"N". "class"="com.Cat">
<list>
</bean>
<bean id "carService" class="proxyFactoryBean">
<list>
<target id"Y". "class"="com.Audi">
<target id"N". "class"="com.Benz">
<list>
</bean>
并且在控制器中注入相同的接口(汽车,动物)并在没有任何代理注入的情况下调用原始方法。
有人可以建议如何使用 SpringProxyFactoryBean 或自定义实现来完成吗?
基本上在代理类中,我想检查配置值,并根据我想在该特定实现对象上调用方法。
如果配置值为 Y ,则从定义的目标列表中,获取代理中的 Y bean 引用并在其上调用方法。
【问题讨论】:
标签: java spring spring-boot spring-mvc java-8