我通过添加新活动实现了订单工作流程的扩展。我需要此活动来使用我在核心中实现的新服务(ExtInterfaceService
)。
问题是我能够将ExtInterfaceService
注入到其他几个控制器和其他服务中,但是只要我将它添加到我的新Activity中,服务器就无法启动异常:
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'extInterfaceService' is defined.
我不知道它是如何自动连接其他控制器/服务而不是工作流程活动的。顺便说一下,这就是我定义服务的方式。
@Service("extInterfaceService")
public class ExtInterfaceServiceImpl implements ExtInterfaceService
我甚至通过在其中一个控制器(使用此服务)中执行以下操作以及我的扩展活动来手动连接它以查看差异:
context.getBean("extInterfaceService",ExtInterfaceService.class);
我注意到Controller和Activity中的 上下文对象是不同的 。 bean在Controller中检索的上下文中找到,但Activity中的上下文没有这个bean!怎么可能呢?
如果我手动创建对象的新实例,则应用程序正常工作。我完全迷失在幕后发生的魔力。
答案 0 :(得分:1)
我通过在此文件中添加以下行来解决此问题: site / src / main / webapp / WEB-INF / applicationContext.xml 。这些行已经存在于 site / src / main / webapp / WEB-INF / applicationContext-servlet.xml 中,但只有在将其添加到 applicationContext.xml 之后才能生效。
<context:component-scan base-package="org.broadleafcommerce.common.web"/>
<context:component-scan base-package="org.broadleafcommerce.profile.web.controller"/>
<context:component-scan base-package="org.broadleafcommerce.profile.web.core.service.login"/>