一、搭建Spring.net环境
1.1 建工程及类库
首先我们要建立解决方案,以及所需要的各种类库。过程中,编写一个用户登陆的功能。
1.1.1 需要安装的程序
Microsoft Visual Studio 2008。(开发环境,不用多说);
FX_setup.exe。(与Flex前台通信的插件);
Enterprise Library。(企业类库);
ODTwithODAC1110720.(Oracle客户端);
1.1.2 建立各种功能项目
首先新建一个“空白解决方案”。然后依次一下类库。
添加项目。
序号 | 项目 | 类库 | 名称 | 用途 | 添加的引用 |
① | 新建项目 | FuorineFx ServiceLibrary | Li. FuorineFx | 与Flex通信相关 | Data、Extension、Interface、Service |
② | 新建网站 | FluorineFx ASP.NET Web Site | Li.WebService | 与Flex通信相关 |
|
③ | 新建类库 | Aspect | Li. Aspect | 代码注入 | Data、 |
④ | 新建类库 | Data | Li.Data | 实体类 |
|
⑤ | 新建类库 | DataAccess | Li. DataAccess | 数据库操作 | Data |
⑥ | 新建类库 | Extension | Li. Extension | 附加类方法 |
|
⑦ | 新建类库 | Interface | Li. Interface | 借口 |
|
⑧ | 新建类库 | Service | Li. Service | 业务处理 | Data、Extension、Interface、Service |
最后把类库的默认命名空间改成Li,这样可以在里面建包,名字不重复。
1.2 添加、更改配置文件
1.3.2 添加类库配置文件
文件属性,生成操作:嵌入资源。不改此项会报错。
①Service类库配置文件
<?xml version="1.0" encoding="utf-8"?> <objects xmlns="http://www.springframework.net"> </objects>
②DataAccess类库配置文件
<?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="dbSettings" /> </object> <db:provider id="dbProvider" provider="Oracle.DataAccess.Client" connectionString="DATA SOURCE=${db.source};PERSIST SECURITY INFO=True;USER ID=${db.user};PASSWORD=${db.password};MAX POOL SIZE=100" /> <object id="adoTemplate" type="Spring.Data.Generic.AdoTemplate, Spring.Data"> <property name="DbProvider" ref="dbProvider" /> <property name="DataReaderWrapperType" value="Spring.Data.Support.NullMappingDataReader, Spring.Data" /> </object> <object id="transactionManager" type="Spring.Data.Core.AdoPlatformTransactionManager, Spring.Data"> <property name="DbProvider" ref="dbProvider" /> </object> </objects>
1.3.3 更改Web.config配置文件
①在configSections中添加
sectionGroup name="spring" > <section name="parsers" type="Spring.Context.Support.NamespaceParsersSectionHandler, Spring.Core"/> <section name="context" type="Spring.Context.Support.WebContextHandler, Spring.Web"/> <section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core"/> </sectionGroup>
②在configuration中添加
<spring> <parsers> <parser type="Spring.Aop.Config.AopNamespaceParser, Spring.Aop"/> <parser type="Spring.Data.Config.DatabaseNamespaceParser, Spring.Data"/> <parser type="Spring.Transaction.Config.TxNamespaceParser, Spring.Data"/> </parsers> <context type="Spring.Context.Support.WebApplicationContext, Spring.Web"> <resource uri="config://spring/objects"/> </context> <objects xmlns="http://www.springframework.net" xmlns:aop="http://www.springframework.net/aop" xmlns:db="http://www.springframework.net/database" xmlns:tx="http://www.springframework.net/tx"> <import resource="assembly://Li.DataAccess/Li.Config/Dao.xml"/> <import resource="assembly://Li.Service/Li.Config/Service.xml"/> </objects> </spring>
③在httpHandlers中添加
<remove path="*.aspx" verb="*"/> <add path="*.aspx" verb="*" type="Spring.Web.Support.PageHandlerFactory, Spring.Web"/>
④在httpModules中添加
<add name="Spring" type="Spring.Context.Support.WebSupportModule, Spring.Web"/>
⑤在system.webServer 下的modules中添加
<remove name="Spring"/> <add name="Spring" preCondition="integratedMode" type="Spring.Context.Support.WebSupportModule, Spring.Web"/>
⑥在system.webServer handlers中添加
<remove name="SpringContextMonitor"/> <remove name="SpringPageHandler"/> <add name="SpringContextMonitor" verb="*" path="ContextMonitor.ashx" preCondition="integratedMode" type="Spring.Web.Support.ContextMonitor, Spring.Web"/> <add name="SpringPageHandler" verb="*" path="*.aspx" preCondition="integratedMode" type="Spring.Web.Support.PageHandlerFactory, Spring.Web"/>
⑦添加数据库标签
<!-- 新加数据库标签 -->
Ⅰ、在configSections中添加
<section name="dbSettings" type="System.Configuration.NameValueSectionHandler"/>
Ⅱ、在configuration中添加
<dbSettings>
<add key="db.source" value="192.1.1.108:1521/uims"/>
<add key="db.user" value="uims"/>
<add key="db.password" value="uims"/>
</dbSettings>
⑧声明代码注入(此处在建立完相应的类后添加)
<object id="interceptorMethod" type="Li.Aspect.InterceptorMethod, Li.Aspect"/> <object id="interceptorThrow" type="Li.Aspect.InterceptorThrow, Li.Aspect"/> <object id="interceptorTransaction" type="Li.Aspect.InterceptorTransaction, Li.Aspect"/> <!-- 声明切入点1 --> <object id="serviceMethodAttributePointcut" type="Spring.Aop.Support.AttributeMatchMethodPointcut, Spring.Aop"> <property name="Attribute" value="Li.Attributes.GeneralAttribute, Li.Aspects"/> </object> <!-- 声明切入点2 --> <object id="transactionAttributePointcut" type="Spring.Aop.Support.AttributeMatchMethodPointcut, Spring.Aop"> <property name="Attribute" value="Spring.Transaction.Interceptor.TransactionAttribute, Spring.Data"/> </object> <!--关联切入点1--> <aop:config> <aop:advisor advice-ref="interceptorMethod" pointcut-ref="serviceMethodAttributePointcut"/> <aop:advisor advice-ref="interceptorThrow" pointcut-ref="serviceMethodAttributePointcut"/> </aop:config> <tx:attribute-driven/> <!--关联切入点2--> <aop:config> <aop:advisor advice-ref="interceptorTransaction" pointcut-ref="transactionAttributePointcut"/> </aop:config>