在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

 

posted on 2017-11-21 13:42  高达  阅读(251)  评论(0)    收藏  举报

导航