首先我们要建立解决方案,以及所需要的各种类库。过程中,编写一个用户登陆的功能。
Microsoft Visual Studio 2008。(开发环境,不用多说);
FX_setup.exe。(与Flex前台通信的插件);
Enterprise Library。(企业类库);
ODTwithODAC1110720.(Oracle客户端);
首先新建一个“空白解决方案”。然后依次一下类库。
添加项目。
序号 |
项目 |
类库 |
名称 |
用途 |
添加的引用 |
① |
新建项目 |
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,这样可以在里面建包,名字不重复。
文件属性,生成操作:嵌入资源。不改此项会报错。
①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>
①在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>