在Spring.NET中使用 PropertyPlaceholderConfigurer设置配置参数
在 Spring.NET 中使用 PropertyPlaceholderConfigurer 设置配置参数
首先,在 <configSections> 中增加了一个配置节的定义 databaseSettings,定义如下:
<section name="databaseSettings" type="System.Configuration.NameValueSectionHandler"/>

然后,在配置文件中定义了关于数据访问的一些配置参数,以备以后使用,每个配置参数通过 key 设置名字,value 是相应的值。
1 <!-- 数据库的配置参数 --> 2 <databaseSettings> 3 <!--数据库地址--> 4 <add key="db.server" value="."/> 5 <!--数据库名称--> 6 <add key="db.database" value="Spring"/> 7 <!--登录账号--> 8 <add key="db.user" value="sa"/> 9 <!--登录密码--> 10 <add key="db.password" value="123"/> 11 </databaseSettings>
在 Spring.NEt 中,通过 PropertyPlaceholderConfigurer 读取配置参数,然后,可以在 Spring.NET 中使用
1 <!--在控制台程序的配置文件 app.config 中,首先使用 PropertyPlaceholderConfigurer 取得配置参数--> 2 <object type="Spring.Objects.Factory.Config.PropertyPlaceholderConfigurer, Spring.Core"> 3 <property name="ConfigSections" value="databaseSettings"/> 4 </object>
以后,在配置文件中,可以使用这些配置参数了。
1 <!--直接写入配置方法--> 2 <!--<db:provider id="DbProvider" provider="System.Data.SqlClient" connectionString="server=.;database=Spring;uid=sa;pwd=123;"/>--> 3 <db:provider id="DbProvider" provider="System.Data.SqlClient" connectionString="server=${db.server};database=${db.database};uid=${db.user};pwd=${db.password};"/>
详细配置如下
1 <?xml version="1.0" encoding="utf-8"?> 2 3 <!-- 4 有关如何配置 ASP.NET 应用程序的详细信息,请访问 5 http://go.microsoft.com/fwlink/?LinkId=169433 6 --> 7 8 <configuration> 9 <configSections> 10 <!-- spring 配置节 --> 11 <sectionGroup name="spring"> 12 <section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/> 13 <section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" /> 14 </sectionGroup> 15 <!-- 数据库的配置参数节 --> 16 <section name="databaseSettings" type="System.Configuration.NameValueSectionHandler"/> 17 </configSections> 18 <!-- 数据库的配置参数 --> 19 <databaseSettings> 20 <!--数据库地址--> 21 <add key="db.server" value="."/> 22 <!--数据库名称--> 23 <add key="db.database" value="Spring"/> 24 <!--登录账号--> 25 <add key="db.user" value="sa"/> 26 <!--登录密码--> 27 <add key="db.password" value="123"/> 28 </databaseSettings> 29 <spring> 30 <context> 31 <resource uri="config://spring/objects"/> 32 </context> 33 <objects xmlns="http://www.springframework.net" xmlns:db="http://www.springframework.net/database"> 34 <!--在控制台程序的配置文件 app.config 中,首先使用 PropertyPlaceholderConfigurer 取得配置参数--> 35 <object type="Spring.Objects.Factory.Config.PropertyPlaceholderConfigurer, Spring.Core"> 36 <property name="ConfigSections" value="databaseSettings"/> 37 </object> 38 39 <!--直接写入配置方法--> 40 <!--<db:provider id="DbProvider" provider="System.Data.SqlClient" connectionString="server=.;database=Spring;uid=sa;pwd=123;"/>--> 41 <db:provider id="DbProvider" provider="System.Data.SqlClient" connectionString="server=${db.server};database=${db.database};uid=${db.user};pwd=${db.password};"/> 42 43 <!--配置AdoTemplate AdoTemplate依赖于DbProvider--> 44 <object id="adoTemplate" type="Spring.Data.Generic.AdoTemplate, Spring.Data"> 45 <property name="DbProvider" ref="DbProvider"/> 46 </object> 47 48 <!--注入StudentDao--> 49 <object id="StudentDao" type="Common.Dao.StudentDao,Common"> 50 <!--<property name="类的属性名" ref="要注入的对象名称"/>--> 51 <property name="AdoTemplate" ref="adoTemplate"/> 52 </object> 53 <!--数据库参数配置--> 54 <object id="DatabaseSettings" type="Common.DatabaseSettings,Common"> 55 <property name="server" value="${db.server}"/> 56 <property name="database" value="${db.database}"/> 57 <property name="user" value="${db.user}"/> 58 <property name="password" value="${db.password}"/> 59 </object> 60 </objects> 61 </spring> 62 <system.web> 63 <compilation debug="true" targetFramework="4.5" /> 64 <httpRuntime targetFramework="4.5" /> 65 </system.web> 66 </configuration>
调用:
1 Spring.Context.IApplicationContext context = Spring.Context.Support.ContextRegistry.GetContext(); 2 DatabaseSettings DatabaseSettings = context.GetObject("DatabaseSettings") as DatabaseSettings; 3 StudentDao StudentDao = context.GetObject("StudentDao") as StudentDao; 4 Student Student = StudentDao.GetStudent();
扩展:
上面例子中PropertyPlaceholderConfigurer使用了以下配置
<object type="Spring.Objects.Factory.Config.PropertyPlaceholderConfigurer, Spring.Core">
<property name="ConfigSections" value="databaseSettings"/>
</object>
还用一种方法是配置集合
如:
<object type="Spring.Objects.Factory.Config.PropertyPlaceholderConfigurer, Spring.Core"> <!--<property name="ConfigSections" value="databaseSettings"/>--> <property name="ConfigSections"> <list> <value>databaseSettings</value> <value>appSettings</value> </list> </property> </object>
LIST对应的参数是如下
1 <!-- 数据库的配置参数 --> 2 <databaseSettings> 3 <!--数据库地址--> 4 <add key="db.server" value="."/> 5 <!--数据库名称--> 6 <add key="db.database" value="Spring"/> 7 <!--登录账号--> 8 <add key="db.user" value="sa"/> 9 <!--登录密码--> 10 <add key="db.password" value="123"/> 11 </databaseSettings> 12 13 14 <appSettings> 15 <add key="Name" value="测试" /> 16 <add key="Num" value="10086" /> 17 </appSettings>
使用方式:
1 <!--数据库参数配置--> 2 <object id="DatabaseSettings" type="Common.DatabaseSettings,Common"> 3 <property name="server" value="${db.server}"/> 4 <property name="database" value="${db.database}"/> 5 <property name="user" value="${db.user}"/> 6 <property name="password" value="${db.password}"/> 7 </object> 8 9 10 <!--AppSettings参数配置--> 11 <object id="AppSettings" type="Common.AppSettings,Common"> 12 <property name="Name" value="${Name}"/> 13 <property name="Num" value="${Num}"/> 14 </object>
详细配置如下:
1 <?xml version="1.0" encoding="utf-8"?> 2 3 <!-- 4 有关如何配置 ASP.NET 应用程序的详细信息,请访问 5 http://go.microsoft.com/fwlink/?LinkId=169433 6 --> 7 8 <configuration> 9 10 11 <configSections> 12 13 <!-- spring 配置节 --> 14 <sectionGroup name="spring"> 15 <section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/> 16 <section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" /> 17 </sectionGroup> 18 <!-- 数据库的配置参数节 --> 19 <section name="databaseSettings" type="System.Configuration.NameValueSectionHandler"/> 20 </configSections> 21 22 23 <!-- 数据库的配置参数 --> 24 <databaseSettings> 25 <!--数据库地址--> 26 <add key="db.server" value="."/> 27 <!--数据库名称--> 28 <add key="db.database" value="Spring"/> 29 <!--登录账号--> 30 <add key="db.user" value="sa"/> 31 <!--登录密码--> 32 <add key="db.password" value="123"/> 33 </databaseSettings> 34 35 36 <appSettings> 37 <add key="Name" value="测试" /> 38 <add key="Num" value="10086" /> 39 </appSettings> 40 41 42 <spring> 43 <context> 44 <resource uri="config://spring/objects"/> 45 </context> 46 47 48 <objects xmlns="http://www.springframework.net" xmlns:db="http://www.springframework.net/database"> 49 50 51 <!--在控制台程序的配置文件 app.config 中,首先使用 PropertyPlaceholderConfigurer 取得配置参数--> 52 <object type="Spring.Objects.Factory.Config.PropertyPlaceholderConfigurer, Spring.Core"> 53 <!--<property name="ConfigSections" value="databaseSettings"/>--> 54 <property name="ConfigSections"> 55 <list> 56 <value>databaseSettings</value> 57 <value>appSettings</value> 58 </list> 59 </property> 60 </object> 61 62 63 <!--直接写入配置方法--> 64 <!--<db:provider id="DbProvider" provider="System.Data.SqlClient" connectionString="server=.;database=Spring;uid=sa;pwd=123;"/>--> 65 <db:provider id="DbProvider" provider="System.Data.SqlClient" connectionString="server=${db.server};database=${db.database};uid=${db.user};pwd=${db.password};"/> 66 67 68 <!--配置AdoTemplate AdoTemplate依赖于DbProvider--> 69 <object id="adoTemplate" type="Spring.Data.Generic.AdoTemplate, Spring.Data"> 70 <property name="DbProvider" ref="DbProvider"/> 71 </object> 72 73 <!--注入StudentDao--> 74 <object id="StudentDao" type="Common.Dao.StudentDao,Common"> 75 <!--<property name="类的属性名" ref="要注入的对象名称"/>--> 76 <property name="AdoTemplate" ref="adoTemplate"/> 77 </object> 78 79 80 <!--数据库参数配置--> 81 <object id="DatabaseSettings" type="Common.DatabaseSettings,Common"> 82 <property name="server" value="${db.server}"/> 83 <property name="database" value="${db.database}"/> 84 <property name="user" value="${db.user}"/> 85 <property name="password" value="${db.password}"/> 86 </object> 87 88 89 <!--AppSettings参数配置--> 90 <object id="AppSettings" type="Common.AppSettings,Common"> 91 <property name="Name" value="${Name}"/> 92 <property name="Num" value="${Num}"/> 93 </object> 94 95 </objects> 96 </spring> 97 98 <system.web> 99 <compilation debug="true" targetFramework="4.5" /> 100 <httpRuntime targetFramework="4.5" /> 101 </system.web> 102 </configuration>
执行
1 Spring.Context.IApplicationContext context = Spring.Context.Support.ContextRegistry.GetContext(); 2 DatabaseSettings DatabaseSettings = context.GetObject("DatabaseSettings") as DatabaseSettings; 3 AppSettings AppSettings = context.GetObject("AppSettings") as AppSettings; 4 StudentDao StudentDao = context.GetObject("StudentDao") as StudentDao; 5 Student Student = StudentDao.GetStudent();
对应项目:在Spring.NET中使用 PropertyPlaceholderConfigurer设置配置参数

链接:http://pan.baidu.com/s/1gePynAj 密码:ntw4
浙公网安备 33010602011771号