Spring.Net+Nhibernate+ASP.MVC4.0+EasyUI实践(二)

本章节详细介绍了如何在MVC4.0项目中使用Spring.NET、Nhibernate、ASP.MVC和EasyUI进行实践,包括添加依赖、配置注入、实现自动建表及配置log4net等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

Spring.Net+Nhibernate+ASP.MVC+EasyUI实践(一)

Spring.Net+Nhibernate+ASP.MVC+EasyUI实践(二)

Spring.Net+Nhibernate+ASP.MVC+EasyUI实践(三)

Spring.Net+Nhibernate+ASP.MVC+EasyUI实践(四)

 

上一篇博客对该项目的基层代码进行编写,这一章节将对MVC4.0项目中编写代码:

1.首先添加spring.net对MVC的注入

(1)添加引用spring.web.mvc3.dll(也可以用spring.web.mvc4,主要是Nuget里还没有更新mvc4),Nuget自动安装其依赖对象

(2)Homecontroll添加一个属性

    public class HomeController : Controller
    {
        public string Message { get; set; }
        public ActionResult Index()
        {
            ViewBag.Message = this.Message;

            return View();
        }
……

(2)新增文件夹Configs,添加文件Controllers.xml,修改属性为嵌入资源

<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net">
  <object type="FinanceWebSys.Controllers.HomeController,FinanceWebSys" singleton="false">
    <property name="Message" value="Spring.NET 1.3.2 的 ASP.NET MVC 依赖注入" />
  </object>
</objects>

(3)修改Global.asax,使得MvcApplication :继承SpringMvcApplication

    public class MvcApplication : SpringMvcApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
            AuthConfig.RegisterAuth();
        }
    }

(4)配置web.config

<configuration>  
<configSections>  
……  
    <sectionGroup name="spring">
      <section name="context" type="Spring.Context.Support.MvcContextHandler, Spring.Web.Mvc3"/>
    </sectionGroup>
  </configSections>
<spring>
    <context>
      <resource uri="file://~/Configs/Controllers.xml"/>
    </context>
  </spring>
……
</configuration>

(5)效果如图:


2.spring对NHibernate的注入:在上面基础上添加引用Model,IBLL,BLL,NHibernateDao,Npgsql.dll(注意Npgsql不能用Nuget来安装,因为spring.data.Nhibernate32最多支持Npgsql2.0.0.0)

(1)在Configs文件夹添加Repository.xml和Manager.xml

<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net"
         xmlns:db="http://www.springframework.net/database">
  <!-- 用以我们在其它的应用程序中,配置数据访问 -->
  <object type="Spring.Objects.Factory.Config.PropertyPlaceholderConfigurer,Spring.Core">
    <property name="ConfigSections" value="databaseSettings"/>
  </object>
  <!-- 数据库和Nhibernate的相关配置 -->
  <db:provider id="DbProvider" provider="${provider}" connectionString="${connectionString}"/>
  <!--SessionFactory对象,其中包括一些比较重要的属性 -->
  <object id="NHibernateSessionFactory" type="Spring.Data.NHibernate.LocalSessionFactoryObject,Spring.Data.NHibernate32">
    <property name="DbProvider" ref="DbProvider"/>
    <property name="MappingAssemblies">
      <list>
        <!--这是配置嵌入资源的xx类对应的xx.hbm.xml文件所在的项目名称-->
        <value>FinanceWebSys.Model</value>
      </list>
    </property>
    <property name="HibernateProperties">
      <dictionary>
        <entry key="hibernate.connection.provider" value="Nhibernate.Connection.DriverConnectionProvider"/>
        <!--数据库方言-->
        <entry key="dialect" value="${dialect}" />
        <!--数据库驱动-->
        <entry key="hibernate.connection.driver_class" value="${driver_class}" />
      </dictionary>
    </property>
  </object>
  <object id="HibernateTemplate" type="Spring.Data.NHibernate.Generic.HibernateTemplate">
    <property name="SessionFactory" ref="NHibernateSessionFactory" />
    <property name="TemplateFlushMode" value="Auto" />
    <property name="CacheQueries" value="true" />
  </object>
  
  <object id="UserDepInfoRepository" type="FinanceWebSys.NhibernateDao.UserDepInfoRepository,FinanceWebSys.NhibernateDao">
    <property name="HibernateTemplate" ref="HibernateTemplate"/>
  </object>
</objects>
<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net">
  <object id="transactionManager"
      type="Spring.Data.NHibernate.HibernateTransactionManager, Spring.Data.NHibernate32">
    <property name="DbProvider" ref="DbProvider"/>
    <property name="SessionFactory" ref="NHibernateSessionFactory"/>
  </object>
  <object id="transactionInterceptor" type="Spring.Transaction.Interceptor.TransactionInterceptor, Spring.Data">
    <property name="TransactionManager" ref="transactionManager"/>
    <property name="TransactionAttributeSource">
      <object type="Spring.Transaction.Interceptor.AttributesTransactionAttributeSource, Spring.Data"/>
    </property>
  </object>
  <!--事物管理器-->
  <object id="BaseTransactionManager"  type="Spring.Transaction.Interceptor.TransactionProxyFactoryObject, Spring.Data" abstract="true">
    <property name="PlatformTransactionManager" ref="transactionManager"/>
    <property name="TransactionAttributes">
      <name-values>
        <!--增加-->
        <add key="Save*" value="PROPAGATION_REQUIRED"/>
        <!--修改-->
        <add key="Update*" value="PROPAGATION_REQUIRED"/>
        <!--删除-->
        <add key="Delete*" value="PROPAGATION_REQUIRED"/>
        <!--获取-->
        <add key="Get*" value="PROPAGATION_REQUIRED"/>
        <!--浏览-->
        <add key="Find*" value="PROPAGATION_SUPPORTS,readOnly"/>
        <!--检索-->
        <add key="Search*" value="PROPAGATION_SUPPORTS,readOnly"/>
        <!--报表-->
        <add key="Query*" value="PROPAGATION_SUPPORTS,readOnly"/>
        <!--载入-->
        <add key="Load*" value="PROPAGATION_SUPPORTS,readOnly"/>
        <!--报表-->
        <add key="Report*" value="PROPAGATION_SUPPORTS,readOnly"/>
        <!--其它-->
        <add key="*" value="PROPAGATION_REQUIRED"/>
      </name-values>
    </property>
  </object>
  
  <object id="UserDepInfoManager" parent="BaseTransactionManager">
    <property name="Target">
      <object type="FinanceWebSys.BLL.UserDepInfoManager,FinanceWebSys.BLL">
        <property name="CurrentRepository" ref="UserDepInfoRepository"/>
      </object>
    </property>
  </object>
</objects>

(2)修改web.config

  <configSections>
……
<!--spring对mvc的注入-->
    <sectionGroup name="spring">
      <section name="context" type="Spring.Context.Support.MvcContextHandler, Spring.Web.Mvc3" />
    </sectionGroup>
    <!--数据库设置-->
    <section name="databaseSettings" type="System.Configuration.NameValueSectionHandler" />
……
  </configSections>
  <!--spring的配置文件-->
  <spring>
    <context>
      <!--Web-->
      <resource uri="file://~/Configs/Controllers.xml" />
      <!--BLL-->
      <resource uri="file://~/Configs/Manager.xml" />
      <!--Dao-->
      <resource uri="file://~/Configs/Repository.xml" />
    </context>
  </spring>
  <!--数据库连接字符串-->
  <databaseSettings>
    <add key="provider" value="Npgsql-2.0" />
    <add key="connectionString" value="Server=127.0.0.1;Port=5432;User Id=postgres;Password=zllzh;Database=FinanceWebDb;" />
    <add key="dialect" value="NHibernate.Dialect.PostgreSQLDialect" />
    <add key="driver_class" value="NHibernate.Driver.NpgsqlDriver" />
  </databaseSettings>

还有两个功能暂时不清楚用法,可以暂时不加进去

<appSettings>   
 <!--spring新增-->
    <add key="Spring.Data.NHibernate.Support.OpenSessionInViewModule.SessionFactoryObjectName" value="NHibernateSessionFactory" />
  </appSettings> 
<system.web>
   <!--新增-->
    <httpModules>
      <add name="OpenSessionInView" type="Spring.Data.NHibernate.Support.OpenSessionInViewModule, Spring.Data.NHibernate32" />
    </httpModules>
……
</system.web>

(3)修改HomeController

    public class HomeController : Controller
    {
        public string Message { get; set; }
        public IUserDepInfoManager UserDepInfoManager { get; set; }
        public ActionResult Index()
        {
            var a = UserDepInfoManager.Get(1);
            ViewBag.Message = a.DepName + a.Id;
            //ViewBag.Message = this.Message;
            return View();
        }

(4)修改Controllers.xml

<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net">
  <object type="FinanceWebSys.Controllers.HomeController,FinanceWebSys" singleton="false">
    <property name="Message" value="Spring.NET 1.3.2 的 ASP.NET MVC 依赖注入" />
    <property name="UserDepInfoManager" ref="UserDepInfoManager"/>
  </object>
</objects>

3.最后看看效果

数据库里随意插入两条数据:

运行:成功了


 

补充:自动建表和配置log4net

1.自动建表

(1)修改web.config

  <!--数据库连接字符串-->
  <databaseSettings>
……
    <!--自动建表-->
    <add key="hbm2ddl.auto" value="update" />
……
  </databaseSettings>


(2)修改Repository.xml,添加自动建表<entry key="hbm2ddl.auto" value="${hbm2ddl.auto}"/>

      <dictionary>
……
        <!--自动建表(反向映射)-->
        <entry key="hbm2ddl.auto" value="${hbm2ddl.auto}"/>
      </dictionary>

2.配置log4net

修改web.confg ,下一篇这里给出完整版的web.config

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值