Spring.NET配置问题

时间:2009-12-16 14:22:37

标签: c# spring.net

我是一名Java开发人员,被迫学习C#。由于我无法忍受不使用依赖注入容器,我正在尝试在我的项目中配置Spring.NET。

我的项目在Visual Studio中分为两个解决方案:一个用于所有业务逻辑,服务,DAO等的ClassLibrary解决方案,以及一个Webapp部分(ASP.NET页面等)。

我发现有趣的是,我可以通过其代码隐藏有效地将依赖注入实际页面,而我无法用JSP实现这一点。但是,我想要的是将ClassLibrary解决方案中的服务(UserService)注入到Web应用程序部分的Login.aspx.cs中。

我是否必须在ClassLibrary端和Web.Config端的App.Config中定义UserService对象?

2 个答案:

答案 0 :(得分:1)

没有。您可以使用'assembly'前缀(在Java中使用'classpath'前缀)将DLL项目(定义UserService)中的Spring.Net配置导入到Web项目中。在您的Web项目的spring配置中,您可以引用DLL中定义的所有对象。

不要忘记将包含配置的XML文件(在DLL项目中)标记为要包含在DLL中的资源。

答案 1 :(得分:0)

运行ASP.NET应用程序时未使用类库的app.config。仅考虑Web应用程序的web.config。因此,在您的web.config中,您可以声明依赖项:

<configSections>
    <sectionGroup name="spring">
        <section name="context" 
                 type="Spring.Context.Support.ContextHandler, Spring.Core"/>
    </sectionGroup>
</configSections>
<spring>
    <context>
        <resource uri="~/Config/context.xml"/>
    </context>
</spring>

并在context.xml中:

<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net">
    <!-- Define the UserService object -->
    <object id="userService" type="Namespace.UserService, ClassLibrary" />
</objects>

最后在你的代码背后:

var userService = (UserService)ContextRegistry
    .GetContext()
    .GetObject("userService");