0

我有一个 Web 控制器,我在 controller-config.xml 中使用

<mvc:annotation-driven />
<context:annotation-config />
<context:component-scan base-package="com.ecommerce.web.controller" />

控制器具有@Controller 注释,如下所示。

@Controller
public class HomeController

我在依赖项中包含了@Autowired 注释,但是当我第一次启动应用程序时,我无法在有线对象上设置任何属性。

例如,我有一个 storeProfile 对象,当它处于调试模式时,我看到它设置了多个属性。但是,当我尝试在 @Autowried bean 上设置其中一个 storeProfile 属性时,它仍然是 null 或空字符串!?

如果您查看附加的图像,它表明在我越过 this.storeProfileContext.setStoreProfile(storeProfile) 行之后,调试器仍将 storeProfile 属性显示为 null

实际上,有几个依赖项看起来像是创建的(它们不是 null 和应用程序函数),但我无法在这些对象上设置任何内容。

我也在 Spring 论坛上问过同样的问题——希望能弄清楚这一点。

非常感谢!

调试器屏幕截图

豆配置

4

2 回答 2

1

这是因为您正在查看代理的字段,该字段是在您拥有时创建的<aop:scoped-proxy/>,如果您为设置值调用 getter,您应该会看到从代理对象中检索到的正确值。

于 2012-11-15T19:39:08.937 回答
0

您正在检查的实例是 CGLIB 代理。

CGLIB 子类化您的 bean,将所有方法调用委托给目标 bean。

所以超类的字段仍然存在但未使用。

于 2012-11-15T19:39:01.667 回答