当前位置: 首页 > 知识库问答 >
问题:

如何使用@Autowired注释两个或多个不同的组件类为同一服务?

席宜修
2023-03-14

例如,拥有如下所示的类。类A中的第一个XService服务不是null,但AmountValidator中的第二个XService服务是null。我得到NULLPointerException我尝试创建beanNew它工作,然后在XService中调用AmountValidateService OutsiderestService时得到相同的异常。如何在使用@autowired注释的任何地方都使用XService

我的主要班级:

@Service
 class A extends AbstractA implements  IA {    
 @Autowired
 XService service; //first autowired definition. code go to check() method. service not null now.

public doSometing(){
    validator.check();
    service.methodA();
    super.AbstractMethod();
  }
}

类A中使用的验证器类:

 class Validator<T> implements IValidator<T> {
         public void check(){
             rule.check(); // rule have a implements IValidator eg: amountValidator, dateValidator class
          }
        }

AmountValidator添加到类Validator中的规则。

@Component
class AmountValidator implements IValidator<T>{
@Autowired
XService service; // code comes here service is null. same service class mentioned above class A.

@Override
public void check(){
     service.validateAmount(); // nullPointerException.
  }
}
@Component
class XService {
@Autowired 
AmountValidateService outsideRestService;

public validateAmount(){
    outsideRestService.validate(); // nullPointer when create XService with the `New` keyword
  }
}

共有1个答案

邵博艺
2023-03-14

您有一个错误,因为您试图自己创建组件/bean/services。正如我在评论中提到的,当您自己创建组件时,@autowired不起作用-这说明您有NPE

 类似资料:
  • 我有一个关于在Guice中绑定的问题。 Guice不会知道我想要IMYInterface的哪个实现。我是否可以在这个阶段指定注释来有选择地说:我想要MyClass2的实现? 多谢

  • 我们的Java应用程序在Logback上使用SLF4J来记录错误消息。在我们的回复中。xml,我们为错误日志定义了一个appender,以及一个指定包层次结构顶层的记录器。 我们正在将记录数据的功能添加到不同的日志文件中。我创建了一个类来处理这个日志记录,我向logback.xml添加了一个新的appender和一个新的logger。新的logger指定了我创建的新类的完全限定包名称(以及addt

  • 我对下面的问题有很大的麻烦。我有一个实体“home”,我在代码中的两个不同位置使用它。问题是,需要根据使用实体的类将其映射到不同的表。 有办法做到我描述的那样吗?

  • 例如,我有两个心率监视器与我的平板电脑配对。我正在使用这样的代码来获取HRM设备列表: 然后,我在GUI中显示一个列表框,其中包含从设备[I]获取的设备名称。名称例如,我选择索引为0的设备。然后我可以访问it人力资源服务和人力资源管理特征: 除了心率,我还需要电池状态。如何访问同一(已选择)设备的电池服务?

  • 问题内容: 我试图在一个元素上拍两个或多个相同类型的注释,在这种情况下是方法。这是我正在使用的近似代码: 编译以上内容时,javac抱怨重复的注释: 这样根本不可能重复注释吗?从学步上讲,上面的两个@Foo实例是否由于内容不同而不同吗? 如果上述方法不可行,有哪些可能的解决方法? 更新:我被要求描述我的用例。开始。 我正在建立一种语法糖化机制,以“映射” POJO到文档存储(例如MongoDB)。

  • null 最终产品应该如下所示: 在上面的例子中,@public instance将只有uniqueKey、gtin、printedGtin作为属性。