假设我有以下几点
public abstract class MyClass {
@Resource
protected MyService myService;
doSomething() {
return myService.doSomething();
}
}
public class MyServiceV1 implements MyService {}
public class MyServiceV2 implements MyService {}
public class MyClassV1 extends MyClass {
//WANT TO USE MyServiceV1 implementation
}
public class MyClassV2 extends MyClass {
//WANT TO USE MyServiceV2 implementation
}
我无法指定要在每个子类中使用的服务实现。我已经考虑过使用@Qualifier,但是我必须在每个子类中重新声明属性并在那里使用它,并且希望它覆盖父类。
这些类的目的是同时提供API的两个版本。因此,这两个版本将同时处于活动状态。
从Spring是如何注入豆子的角度来看,这确实是一种反模式,所以我对其他方法持开放态度。
我认为您可以尝试使用构造函数注入在类中设置特定的服务。Smth是这样的:
public abstract class MyClass {
protected MyService myService;
doSomething() {
return myService.doSomething();
}
}
class MyClassV1 extends MyClass {
MyClassV1(MyService myService) {
this.myService = myService;
}
}
class MyClassV2 extends MyClass {
MyClassV2(MyService myService) {
this.myService = myService;
}
}
@Bean
MyClassV1 myClassV1() {
return new MyClassV1(myServiceV1());
}
@Bean
MyClassV1 myClassV2() {
return new MyClassV2(myServiceV2());
}
@Bean
MyServiceV1 myServiceV1() {
return new MyServiceV1();
}
@Bean
MyServiceV2 myServiceV2() {
return new MyServiceV2();
}
或setter注射:
public abstract class MyClass {
private MyService myService;
public void setMyService(MyService myService) {
this.myService = myService;
}
}
@Component
public class MyClass1 extends MyClass {
@Autowired @Qualifier("myService1")
@Override
public void setMyService(MyService myService) {
super.setMyService(myService);
}
}
@Component
public class MyClass2 extends MyClass {
@Autowired @Qualifier("myService2")
@Override
public void setMyService(MyService myService) {
super.setMyService(myService);
}
}
Spring配置:我创建了2个bean,引用了相同的类但不同的数据库会话。 现在有没有办法将id为“abc1”的bean设置为用于自动装配的默认bean,并在像这样明确提到时使用abc2进行自动装配: 解决方案: 使abc1默认为自动连接。 为了创建abc2的实例,我们可以使用:
问题内容: 我有以下定义。 在我的bean定义中,我有两个相同类型的bean 如果有所不同,则从另一个xml文件导入第二个bean。它们也设置了不同的属性。为什么spring不会抛出错误,因为已经定义了2个相同类型的bean。它是否使用变量名,因为它们与bean id匹配。dao是不同的,如果我对两个不同的bean使用@Qualifiers,则功能可以按预期工作。 这是一个更简洁的版本。我没有考虑
我是JPA新手。目前,我正在编写一个带有注释的本机查询。我有一个类似下面的类 我正在编写两个查询,其中一个查询在选择投影中包含字段2,而另一个不包含字段2。如何对这两个查询使用相同的类?我尝试了瞬态注释。但它使两个查询的值都为null。
null 如何使用Spring Batch配置JTA/XA事务(Atomikos)?
因此,上述结构在ClassA中也同样存在。 假设我想编码2个其他类ClassC(使用ClassA的实例)和ClassD(使用ClassB的实例)。除了ClassA和ClassB的实例之外,ClassC和ClassD的代码完全相同。 从示例中可以看出,ClassC和ClassD具有相同的功能,但对tmp使用了不同的类
问题内容: 在JPA中,我有2个实体:Entry和Comment。条目包含两个Comment对象集合。 为了存储此类对象,JPA + Hibernate创建“ Entry”表,“ Comment”表和单个“ Entry_Comment”: 对象的存储失败,并且不能同时为“非null”。 如何使用JPA + Hibernate存储包含两个相同类型的集合的对象? 问题答案: 这是许多Hibernate