spring.net + Nhibernate 做开发。大多数人会使用到HibernateTemplate。我在看过spring.net 自带的例子,然后通过他的配置和方法,在访问数据调用的时候,HibernateTemplate 为null.说明注入失败吗?
<?xml version="1.0" encoding="utf-8"?>
<configuration> <configSections> <!-- Spring --> <sectionGroup name="spring"> <section name="context" type="Spring.Context.Support.WebContextHandler, Spring.Web"/> <section name="objects" type="Spring.Context.Support.DefaultSectionHandler,        Spring.Core"/> <section name="parsers" type="Spring.Context.Support.NamespaceParsersSectionHandler,        Spring.Core"/> </sectionGroup> </configSections> <!-- Spring --> <spring> <parsers>
<parser type="Spring.Data.Config.DatabaseNamespaceParser, Spring.Data"/>
</parsers> <context> <resource uri="config://spring/objects"/> </context> <objects xmlns="http://www.springframework.net"   xmlns:db="http://www.springframework.net/database">
<db:provider id="DbProvider"
                     provider="SqlServer-2.0"
                     connectionString="Data Source=.\SQLEXPRESS;Database=Test;Integrated Security=true;User Instance=false; uid=sa;pwd=321"/> <object type="Spring.Objects.Factory.Config.PropertyPlaceholderConfigurer,Spring.Core"> <property name="ConfigSections" value="databaseSettings"/> </object> <object id="SessionFactory" type="Spring.Data.NHibernate.LocalSessionFactoryObject,Spring.Data.NHibernate12"> <property name="DbProvider" ref="DbProvider"/> <property name="MappingAssemblies"> <list>
<value>SpringHibernate.Net.Model</value>
<value>SpringHibernate.Net.BaseClass</value> </list> </property> <property name="HibernateProperties">
<dictionary>
<entry key="hibernate.connection.provider"
   value="NHibernate.Connection.DriverConnectionProvider"/>
<entry key="dialect"
   value="NHibernate.Dialect.MsSql2005Dialect"/>
<entry key="hibernate.connection.driver_class"
   value="NHibernate.Driver.SqlClientDriver"/> </dictionary>
</property> </object> <object name="MyMathObj"  type="SpringHibernate.Net.BaseClass.DMath,SpringHibernate.Net.BaseClass" />

<object id="PersonDAO" type="SpringHibernate.Net.BaseClass.PersonDAO, SpringHibernate.Net.BaseClass">
<property name="SessionFactory" ref="SessionFactory"/> </object> <!-- Pages --> <object type="Default.aspx">
<property name="Message" value="Hello from Web.Config"/>
<property name="DMath" ref="MyMathObj"/>
<property name="PersonDAO" ref="PersonDAO"/>

</object> </objects>
</spring></configuration>
配置有错误吗? public partial class _Default : System.Web.UI.Page
    {
        IPersonDAO personDAO;        public IPersonDAO PersonDAO
        {            get { return personDAO; }            set { personDAO = value; }        }
        protected void Page_Load(object sender, EventArgs e)
        {            //Response.Write(message);
            Response.Write(DMath.add(30, 50));
                         Person p = new Person();            p.Name = "Maruf";            personDAO.Save(p);            Person p1 = personDAO.LoadByID(1);        }
    }刚接触,所以有很多的不懂,望高手指点!

解决方案 »

  1.   

    你要做的只是做持久化的数据访问,需要用Spring吗?我前面做过Nhibernate,只有Nhibernate就可以做到了
    Spring我没有研究过。
    但我有现成的例子,数据库是Oracle,Nhibernate的版本是2.0.1,最稳定的版本。我看你使用的好像还是1.2
      

  2.   

    BS的不太明白。但是页面是由Asp.net创建的吧。spring可能无法注入吧。cs可以封装一个Dao工厂。
      

  3.   

    thank you!spring.net 的依赖注入,怎么会不能注入呢?
    spring.net + Nhibernate + asp.net mvc+extjs已经有产品出现。我所碰到的问题是,在配置中应该存在问题。导致运行时注入对象不能得到实例化。在国外站点我已经找到一点东西。
    但是所有的配置全部整合到web.config里。导致该文件的数据臃肿。
    我于是切出来,配置中导致model里类都不能加载,这个问题,又让我困惑中努力……
    感谢两位谢谢。该贴继续等待解答……
      

  4.   

    把你的配置文件贴出来我看看。spring.net是可以在运行时进行注入。但是是有限制的,比如你的构造注入是无法完成的。
      

  5.   

    我的也是未将对象引用设置到对象实例, HibernateTemplate.Save(user);还有web.config老是
    消息 1 未能找到元素“SpringOverrideProperty”的架构信息。 D:\4-13MSPRO\SpringHiberate_pro\SpringHiberate\Web.config 12 4 SpringHiberate
    消息 2 未能找到元素“add”的架构信息。 D:\4-13MSPRO\SpringHiberate_pro\SpringHiberate\Web.config 13 6 SpringHiberate
    消息 3 未能找到属性“key”的架构信息。 D:\4-13MSPRO\SpringHiberate_pro\SpringHiberate\Web.config 13 10 SpringHiberate有很多这样的信息,应该是标签不能识别吧,我也是刚接触Spring.NET+NHibernate的,还是觉得Java的SSH框架比较友好。