0

我的spring xml文件中有这个:

<object type="Test.Web.Utilities.TestClass, Test.Web" singleton="false" id="TestClass">
    <property name="TestService" ref="TestService"/>
</object>

在 TestClass 我有这个:

public ITestService TestService { get; set; }

还有这个:

public void TestMethod()
{
var x = TestService.ExampleMethod();
}

接下来,在我的控制器中,我有这个:

TestClass t = new TestClass();
t.TestMethod();

但是,我似乎没有让这个工作。控制器上其他与弹簧相关的东西效果很好。

任何想法我怎样才能让它工作?

编辑:忘记添加,我得到的错误是 NullReferenceException

4

2 回答 2

1

这是行不通的,因为您是通过new创建 TestClass 实例,而 Spring 当然不知道将依赖项注入通过 new 框架创建的对象中。您不会找到可以做到这一点的 .NET IOC 框架(有充分的理由!)。

所以你需要做的就是将 TestClass 的实例注入到你的控制器中。您可以使用请求或原型范围注册这些实例。

于 2012-04-08T08:14:36.690 回答
0

您不能使用普通的“new”关键字,因为这是通过 .NET VM 处理的。你实际上需要调用 Spring 的 Activator Context 来给你一个实例。

首先,您通过调用获取 Spring.NET Activator 上下文:

IApplicationContext ctx = ContextRegistry.GetContext();

然后,您可以获得配置 xml 中指定的类的实例:

ITestService svc = (ITestService)ctx.GetObject("TestClass");

这使您能够通过 XML 文件配置实现 ITestService 接口的具体实现类。

于 2012-04-09T19:02:31.747 回答