@Autowired注释不适用于亚马逊swf活动

时间:2016-01-30 10:08:00

标签: spring amazon-web-services amazon-swf

我正在开发一个由amazon简单工作流管理的应用程序和带有基于注释的依赖注入的spring 4。

IMyActivity.java

package com.test.activities;
import com.amazonaws.services.simpleworkflow.flow.annotations.Activities;
import com.amazonaws.services.simpleworkflow.flow.annotations.ActivityRegistrationOptions;
@ActivityRegistrationOptions(defaultTaskScheduleToStartTimeoutSeconds = 3000,
                             defaultTaskStartToCloseTimeoutSeconds = 100)
@Activities(version="1.0")
public interface IMyActivity {
  String dofunc();
}

MyActivityImpl.java

package com.test.activities;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;


import com.test.services.TransactionService;


@Component
public class MyActivityImpl implements IMyActivity {

  @Autowired
  private ITransactionService transactionService;

  @Override
  public String dofunc() {

    return transactionService.dosomething();
  }
}

我面临的问题是,当活动由swf调度时,ITransactionService实现不会被注入,transactionService为空。但是,当IMyActivity myactivity来自其他任何地方@Autowired并且未被swf调用时,一切正常。

我在这里做错了吗?请帮忙。

2 个答案:

答案 0 :(得分:1)

检查您的MyActivityImpl类是否位于组件扫描设置中指定的包中。如果你使用java config:

@ComponentScan(basePackages = "")

如果您使用xml config:

<context:component-scan base-package=""/>

答案 1 :(得分:1)

我遵循了此文档http://docs.aws.amazon.com/amazonswf/latest/awsflowguide/test.html#test.spring。这是使用spring进行集成的官方亚马逊swf文档。工作就像一个魅力。