我是一名Java开发人员,被迫学习C#。由于我无法忍受不使用依赖注入容器,我正在尝试在我的项目中配置Spring.NET。
我的项目在Visual Studio中分为两个解决方案:一个用于所有业务逻辑,服务,DAO等的ClassLibrary解决方案,以及一个Webapp部分(ASP.NET页面等)。
我发现有趣的是,我可以通过其代码隐藏有效地将依赖注入实际页面,而我无法用JSP实现这一点。但是,我想要的是将ClassLibrary解决方案中的服务(UserService)注入到Web应用程序部分的Login.aspx.cs中。
我是否必须在ClassLibrary端和Web.Config端的App.Config中定义UserService对象?
答案 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");