首先我们要建立解决方案,以及所需要的各种类库。过程中,编写一个用户登陆的功能。
?
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>
?
?
?
?