@Spring3.0中的自动连线——创建静态bean?

@Spring3.0中的自动连线——创建静态bean?,spring,autowired,Spring,Autowired,我一定是用错了@Autowired,但我不知道怎么用。这是一个Spring3.0门户MVC应用程序 服务本身不是基于spring的,而是自动生成的。有一个围绕服务编写的impl,提供一些自定义功能-这些类是自动连接的 我遇到的问题是,我的自动连线类在内部似乎被视为静态的。因此,此代码不是线程安全的 控制器类: @Controller @RequestMapping("VIEW") @SessionAttributes(value={"shoppingCartCommonBean"}) publi

我一定是用错了@Autowired,但我不知道怎么用。这是一个Spring3.0门户MVC应用程序

服务本身不是基于spring的,而是自动生成的。有一个围绕服务编写的impl,提供一些自定义功能-这些类是自动连接的

我遇到的问题是,我的自动连线类在内部似乎被视为静态的。因此,此代码不是线程安全的

控制器类:

@Controller
@RequestMapping("VIEW")
@SessionAttributes(value={"shoppingCartCommonBean"})
public class ShoppingCartAndOrderScreenHandler     
{   
    @Autowired
    AbstractServiceImpl releaseOrderService;

    . . . 

    @ActionMapping(value = "SubmitOrder")
    public void submitOrder(Model model, PortletRequest request) {

        try {
            ReleaseOrderContract contract = new ReleaseOrderContract();

            /* Initialize contract values from request */

            releaseOrderService.setServiceRequest(contract);

            logger.debug("ReleaseOrderImpl Hash: " + 
                          releaseOrderService.hashCode());

            releaseOrderService.invoke();

         }
     . . . .
     }
 }
其中,自动连线在springconfig.xml中声明为

<beans xmlns="http://www.springframework.org/schema/beans"  . . . >
    <context:component-scan 
        base-package="com.marchon.orderentry.shoppingcartandorder.requesthandler" />
    . . . .
    <bean class="com.marchon.orderentry.serviceimpls.ReleaseOrderServiceImpl"
          id="releaseOrderService" />
    . . . .
</beans>
我原以为自动连接会为控制器类的每个实例创建bean的副本。但事实并非如此。我不明白什么


它是自动连接的并不相关。

SpringBean默认为单例。如果您需要releaseOrderService不是单例服务,那么需要适当地设置bean范围。看

[ebContainer : 1] [ShoppingCartAndOrderScreenHandler . 208] DEBUG - ReleaseOrderImpl Hash: 1385321106
[ebContainer : 3] [ShoppingCartAndOrderScreenHandler . 208] DEBUG - ReleaseOrderImpl Hash: 1385321106
[ebContainer : 0] [ShoppingCartAndOrderScreenHandler . 208] DEBUG - ReleaseOrderImpl Hash: 1385321106
<bean class="com.marchon.orderentry.serviceimpls.ReleaseOrderServiceImpl"
      id="releaseOrderService"
      scope="prototype" />