在哪里应用ApplicationContextAware

时间:2018-07-20 14:59:59

标签: java spring

我有一个Spring类的Service类,并且我想在不是Spring bean的类(Class A)中使用此Service类。

我应该在哪里实现ApplicationContextAware?

以下是我的代码

   @Service("sharedListsService")
   public class  SharedListsService
   {

   }

   public class A
   {
      // I want to call my service class methods here
   }

2 个答案:

答案 0 :(得分:1)

我不确定这是否是最好的解决方案,但是您可以像下面这样重构您的A类:

public class A {
    private SharedListsService sharedListsService;

    public void setSharedListsService(SharedListsService sharedListsService) {
        this.sharedListsService = sharedListsService;
    }
}

,然后在创建A类实例(例如)时注入spring bean:

SharedListsService sharedListsService = WebApplicationContextUtils.getWebApplicationContext(appContext).getBean(SharedListsService.class);

A a = new A();
a.setSharedListsService(sharedListsService);

答案 1 :(得分:1)

ApplicationContextAware 仅适用于春豆。 它将应用程序上下文注入到bean中。这就是为什么您不能直接使用它来将SharedListsService实例转换为“ A”的原因。 您需要一个bean,可能是factory的“ A”才能为您连接。