下面是配置文件:
<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.net http://www.springframework.net/xsd/spring-objects.xsd">
<object id="transactionManager" type="Spring.Data.NHibernate.HibernateTransactionManager, Spring.Data.NHibernate21">
<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="Set*" value="PROPAGATION_REQUIRED"/>
<add key="Finish*" value="PROPAGATION_REQUIRED"/>
<add key="Update*" value="PROPAGATION_REQUIRED"/>
<add key="Delete*" value="PROPAGATION_REQUIRED"/>
<add key="Add*" value="PROPAGATION_REQUIRED"/>
<add key="Get*" value="PROPAGATION_SUPPORTS,readOnly"/>
<add key="Find*" value="PROPAGATION_SUPPORTS,readOnly"/>
<add key="Load*" value="PROPAGATION_SUPPORTS,readOnly"/>
<add key="*" value="PROPAGATION_REQUIRED"/>
</name-values>
</property>
</object> <object id="CompanyManager" type="NHibernateTest.SpringNetIntegration.BLL.CompanyManager,NHibernateTest">
<!--<property name="Test" value="1" />-->
<property name="Dao" ref="repository.company" />
</object> <object id="UserManager" type="NHibernateTest.SpringNetIntegration.BLL.UserManager,NHibernateTest">
<property name="Dao" ref="repository.user" />
</object>
<object id="CompanyTransactionManager" parent="BaseTransactionManager">
<property name="Target" ref="CompanyManager" />
</object> <object id="UserTransactionManager" parent="BaseTransactionManager">
<property name="Target">
<object type="NHibernateTest.SpringNetIntegration.BLL.UserManager,NHibernateTest">
<property name="Dao" ref="repository.user"/>
</object>
</property>
</object></objects>在测试中获取CompanyManager对象时,CompanyManager的Dao属性可以被注入,可是在CompanyTransactionManager时Dao却为空。[Test]
public void SaveCompanyTest()
{
//Console.Out.WriteLine(companyManager.Test);
IApplicationContext applicationContext = ContextRegistry.GetContext();
CompanyManager companyManager1 = (CompanyManager)applicationContext.GetObject("CompanyManager");
CompanyManager companyManager2 = (CompanyManager)applicationContext.GetObject("CompanyManager"); Assert.IsNotNull(companyManager1.Dao); //成功
Assert.IsNotNull(companyManager2.Dao); //失败 Company company = new Company() { CompanyName = "IBM" };
companyManager.Save(company);
}请高手帮我看一下,谢谢。
<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.net http://www.springframework.net/xsd/spring-objects.xsd">
<object id="transactionManager" type="Spring.Data.NHibernate.HibernateTransactionManager, Spring.Data.NHibernate21">
<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="Set*" value="PROPAGATION_REQUIRED"/>
<add key="Finish*" value="PROPAGATION_REQUIRED"/>
<add key="Update*" value="PROPAGATION_REQUIRED"/>
<add key="Delete*" value="PROPAGATION_REQUIRED"/>
<add key="Add*" value="PROPAGATION_REQUIRED"/>
<add key="Get*" value="PROPAGATION_SUPPORTS,readOnly"/>
<add key="Find*" value="PROPAGATION_SUPPORTS,readOnly"/>
<add key="Load*" value="PROPAGATION_SUPPORTS,readOnly"/>
<add key="*" value="PROPAGATION_REQUIRED"/>
</name-values>
</property>
</object> <object id="CompanyManager" type="NHibernateTest.SpringNetIntegration.BLL.CompanyManager,NHibernateTest">
<!--<property name="Test" value="1" />-->
<property name="Dao" ref="repository.company" />
</object> <object id="UserManager" type="NHibernateTest.SpringNetIntegration.BLL.UserManager,NHibernateTest">
<property name="Dao" ref="repository.user" />
</object>
<object id="CompanyTransactionManager" parent="BaseTransactionManager">
<property name="Target" ref="CompanyManager" />
</object> <object id="UserTransactionManager" parent="BaseTransactionManager">
<property name="Target">
<object type="NHibernateTest.SpringNetIntegration.BLL.UserManager,NHibernateTest">
<property name="Dao" ref="repository.user"/>
</object>
</property>
</object></objects>在测试中获取CompanyManager对象时,CompanyManager的Dao属性可以被注入,可是在CompanyTransactionManager时Dao却为空。[Test]
public void SaveCompanyTest()
{
//Console.Out.WriteLine(companyManager.Test);
IApplicationContext applicationContext = ContextRegistry.GetContext();
CompanyManager companyManager1 = (CompanyManager)applicationContext.GetObject("CompanyManager");
CompanyManager companyManager2 = (CompanyManager)applicationContext.GetObject("CompanyManager"); Assert.IsNotNull(companyManager1.Dao); //成功
Assert.IsNotNull(companyManager2.Dao); //失败 Company company = new Company() { CompanyName = "IBM" };
companyManager.Save(company);
}请高手帮我看一下,谢谢。
写错了,应该是:
CompanyManager companyManager2 = (CompanyManager)applicationContext.GetObject("CompanyTransactionManager");