项目中有些参数在某些阶段中是常量,但是有时候又会面临被改变
比如 :在开发阶段我们连接数据库时的连接url,username,password,driverClass等
分布式应用中client端访问server端所用的server地址,port,service地址等
配置文件的位置
2.而这些参数在不同阶段之间又往往需要改变
比如:在项目开发阶段和交付阶段数据库的连接信息往往是不同的,分布式应用也是同样的情况。
期望:能不能有一种解决方案可以方便我们在一个阶段内不需要频繁书写一个参数的值,而在不同阶段间又可以方便的切换参数配置信息
解决:spring3中提供了一种简便的方式就是context:property-placeholder/元素
只需要在spring的配置文件里添加一句:<context:property-placeholder location="classpath:jdbc.properties"/> 即可,这里location值为参数配置文件的位置,参数配置文件通常放在src目录下,而参数配置文件的格式跟java通用的参数配置文件相同,即键值对的形式,例如:#jdbc配置
test.jdbc.driverClassName=com.mysql.jdbc.Driver
test.jdbc.url=jdbc:mysql://localhost:3306/test
test.jdbc.username=root
test.jdbc.password=root
行内#号后面部分为注释
应用:
1.这样一来就可以为spring配置的bean的属性设置值了,比如spring有一个jdbc数据源的类DriverManagerDataSource
在配置文件里这么定义bean:
<bean id="testDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${test.jdbc.driverClassName}"/>
<property name="url" value="${test.jdbc.url}"/>
<property name="username" value="${test.jdbc.username}"/>
<property name="password" value="${test.jdbc.password}"/>
</bean>
2.甚至可以将${ }这种形式的变量用在spring提供的注解当中,为注解的属性提供值
分享到:
相关推荐
context:property-placeholder 和util:properties 博客:https://blog.csdn.net/u010476739/article/details/76735527
通常,如果你在配置文件中使用了相同的`<context:property-placeholder>`标签,Spring只会加载一次属性文件,而不会针对每个数据源重新加载。因此,${jdbc.url}等属性可能只被解析了一次,而不是按照每个数据源分别...
在Spring框架中,`<context:property-placeholder>`是用于加载和解析属性文件的一个标签,它允许我们在XML配置或Java配置中使用占位符 `${...}` 来引用属性文件中的值。这样做的好处是,我们可以将敏感信息如数据库...
使用`context:property-placeholder`标签将属性文件加载到Spring上下文中。然后,配置数据源`dataSource`,例如使用Apache Commons DBCP库: ```xml <context:property-placeholder location="classpath:jdbc....
7. **基于Properties和YAML文件装载外部化配置**:`<context:property-placeholder>`和`<context:property-override>`用于加载和覆盖属性值,而YAML文件提供了更友好的格式来组织配置数据。 8. **基于Extensible ...
接下来,在Spring的`applicationContext.xml`配置文件中,我们使用`<context:property-placeholder>`标签来加载属性文件,并声明数据源bean。这个标签会自动替换XML配置文件中的占位符(以`${}`包裹)为属性文件中的...
此外,`<context:property-placeholder>`则可以用来加载属性文件,方便在配置中引用环境变量。 Spring 3.0引入了AOP(Aspect-Oriented Programming,面向切面编程)的增强,`aop.xsd`定义了与切面相关的配置元素,...
`context`命名空间下的 `<context:component-scan>`、`<context:property-placeholder>`等元素,用于扫描组件、加载外部属性文件,增强了Spring的应用范围和灵活性。 "cache"模块则提供了缓存抽象,支持如 EhCache...
2. **使用<context:property-placeholder>标签加载多个配置文件** 如果需要引入多个Properties文件,可以使用`<context:property-placeholder>`标签,指定多个`location`: ```xml <context:property-placeholder...
3. ** Context `.xsd`**:扩展了基本的Bean配置,引入了上下文相关的功能,如`<context:component-scan>`用于自动发现和注册bean,以及`<context:property-placeholder>`用于处理属性占位符。 4. ** JDBC `.xsd`**...
NamespaceHandler 负责解析 xml 配置文件中的自定义命名空间,例如 `<context:property-placeholder>`。NamespaceHandler 将自定义命名空间转换为 Spring 中的 BeanDefinition 对象,以便于后续的处理。 ...
<context:property-placeholder location="classpath:jdbc.properties" /> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name...
例如,通过 `<context:property-placeholder>` 可以加载属性文件: ```xml <context:property-placeholder location="classpath:database.properties"/> ``` 综上所述,`applicationContext.xml` 在 Spring 3.1 中...
在`applicationContext.xml`中通过`<context:property-placeholder>`标签来指定`properties`文件的位置。例如,我们需要引入两个文件:`jdbc.properties`和`res.properties`,可以这样配置: ```xml <!-- 引入 jdbc...
8. `<context:property-placeholder>`:加载属性文件,使你可以在配置中使用占位符 `${...}`。 9. `<import>`:引入其他XML配置文件,允许配置模块化。 10. `<bean>`的`init-method`和`destroy-method`属性:指定...
首先,在Spring配置文件中,通过`<context:component-scan>`标签定义了组件扫描的基包为`com.liao`,并排除了带有`@Controller`注解的类,这意味着该扫描主要用于扫描服务层等非控制器组件。 ```xml <context:...
在Spring的老版本中,通常使用`<context:property-placeholder>`或`<util:properties>`元素来加载属性文件。例如: ```xml <!-- 使用 context:property-placeholder --> <beans xmlns=...
<context:property-placeholder location="classpath:config.properties"/> <!-- 自动扫描dao和service包 --> <context:component-scan base-package="me.gacl.dao,me.gacl.service"/> </beans> ``` 4. **...
如`<context:component-scan>`用于自动扫描并注册bean,`<context:property-placeholder>`则用于处理属性文件。 4. `spring-aop-4.0.xsd`:这部分关注Spring的面向切面编程(AOP),定义了如何创建和配置切面、通知...
<context:property-placeholder location="classpath:db.properties"/> <!-- 配置数据源 --> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> <property name="driverClassName" value...