@Autowired 注释不适用于 amazon swf activity
@Autowired annotation does not work on amazon swf activity
我正在开发一个由 amazon simple workflow 管理的应用程序,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();
}
}
我面临的问题是,当 activity 由 swf 调度时,ITransactionService
实现没有被注入并且 transactionService
为空。但是,当 IMyActivity myactivity
是来自其他任何地方的 @Autowired
且未被 swf 调用时,一切正常。
我是不是做错了什么?请帮忙。
检查您的 MyActivityImpl
class 是否位于组件扫描设置中指定的包中。如果你使用 java 配置:
@ComponentScan(basePackages = "")
如果您使用 xml 配置:
<context:component-scan base-package=""/>
我遵循了这份文档 http://docs.aws.amazon.com/amazonswf/latest/awsflowguide/test.html#test.spring。这是使用 spring 集成的官方 amazon swf 文档。工作得很好。
我正在开发一个由 amazon simple workflow 管理的应用程序,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();
}
}
我面临的问题是,当 activity 由 swf 调度时,ITransactionService
实现没有被注入并且 transactionService
为空。但是,当 IMyActivity myactivity
是来自其他任何地方的 @Autowired
且未被 swf 调用时,一切正常。
我是不是做错了什么?请帮忙。
检查您的 MyActivityImpl
class 是否位于组件扫描设置中指定的包中。如果你使用 java 配置:
@ComponentScan(basePackages = "")
如果您使用 xml 配置:
<context:component-scan base-package=""/>
我遵循了这份文档 http://docs.aws.amazon.com/amazonswf/latest/awsflowguide/test.html#test.spring。这是使用 spring 集成的官方 amazon swf 文档。工作得很好。