在进行数据源的连接URL,用户名,密码这些配置的时候,可以直接在spring的配置文件中配置
,但是另一种更好的方法是将这些配置信息独立到一个外部属性文件中,并在spring配置文件
中通过${url}等占位符引用属性文件中的属性项,这种配置方式的好处如下:
1.减少维护的工作量。
2.使部署更简单。
spring为我们提供了一个PropertyPlaceholderConfigurer,它能够使bean在配置时引用外部属
性文件。PropertyPlaceholderConfigurer实现了BeanFactoryPostProcessorBean接口,因此也
是一个Bean工厂后处理器。
以下通过一个实例说明:
现有一个pojo类:org.huang.connection.java
public class Connection {
public String url;
public String username;
public String password;
//set/get方法省略
}
在相同目录下建立connection.property文件,其内容如下:
url=jdbc:oracle:thin:@localhost:1521
username=zhansan
password=lisi
在工程中引入spring的包,然后在applicationContext.xml中利用PropertyPlaceholderConfigurer引入这个配置文件,并在配置Connection Bean时通过占位符引用属性文件中的属性项。具体配置如下:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:org/huang/connection.properties</value>
</list>
</property>
<property name="fileEncoding" value="utf-8"></property>
</bean>
<bean id="connection" class="org.huang.Connection">
<property name="url" value="${url}"></property>
<property name="username" value="${username}"></property>
<property name="password" value="${password}"></property>
</bean>
在以上配置中,通过locations属性制定属性文件的位置。locations属性的类型为Resource[],所以用户可以在地址前指定资源类型前缀。如果要引用多个属性文件,只需添加多个<value>配置项即可。
然后写client.java,内容如下:
public static void main(String[] args) {
BeanFactory factory=new ClassPathXmlApplicationContext("applicationContext.xml");
Connection connection=(Connection) factory.getBean("connection");
System.out.println(connection.getUrl());
System.out.println(connection.getUsername());
System.out.println(connection.getPassword());
}
可以看到控制台打印如下:
jdbc:oracle:thin:@localhost:1521
zhansan
lisi
PropertyPlaceholderConfigurer其他属性
除了必不可少的locations属性外,PropertyPlaceholderConfigurer还有一些常用的属性,在一些高级应用中,这些属性可以提供帮助:
— location:如果只有一个属性文件,也通过使用这个属性进行设置,locations属性用于设置多个属性文件;
— fileEncoding:属性文件的编码格式,Spring缺省使用操作系统默认编码读取属性文件,如果属性文件采用了特殊编码,需要通过该属性显式指定;
— order:如果配置文件中定义了多个PropertyPlaceholderConfigurer,通过该属性指定调用的顺序;
— placeholderPrefix:在这上面的例子中,我们通过${属性名}引用属性文件中的属性项,其中“${”为默认的占位符前缀,可以根据需要改为其他的前缀符;
— placeholderSuffix:占位符后缀,默认为“}”。
分享到:
相关推荐
在Spring框架中,属性文件是配置关键信息的常用...通过这种方式,你可以在Spring中安全地使用外部属性文件,同时满足系统的安全需求。这种做法不仅可以提高应用的可维护性和部署效率,还能保护敏感信息,降低安全风险。
在Java Spring框架中,使用外部属性文件是一种常见的最佳实践,它允许我们将应用程序的配置信息与源代码分离,便于管理、维护和环境间的切换。本文将深入探讨如何在Spring应用中利用外部属性文件,以及其背后的原理...
当需要使用外部属性文件时,我们可以创建一个独立的`.properties`文件,如`config.properties`,这个文件可以包含应用程序的配置参数,如数据库连接字符串、服务器端口等。 在`config.properties`中,键值对的形式...
而`@PropertySource`注解可以直接在类级别上声明,指示Spring从指定的属性文件中读取属性。 3. **环境特定配置** 通过使用`spring.profiles.active`属性,我们可以为不同的环境(如开发、测试、生产)指定不同的...
在上面的配置中,我们使用 PropertyPlaceholderConfigurer 来引入外部属性文件 system.properties,然后在数据源 Bean 中使用占位符 ${} 来引用属性文件中的属性项。 PropertyPlaceholderConfigurer 属性说明 ...
通过以上步骤,我们可以利用Spring4的`property-placeholder`特性,将配置信息从主配置文件中分离出来,存储在外部属性文件中,使得配置管理更加灵活和安全。这一实践对于大型项目来说至关重要,因为它提高了代码的...
- **使用外部属性文件**:如何在Spring中使用外部属性文件。 - **spEL**:Spring Expression Language的介绍和使用场景。 - **IOC容器中Bean的生命周期**:Bean从创建到销毁的过程。 - **Spring 4.x新特性**:泛型...
在Spring框架中,配置...总之,Spring框架允许我们在不修改代码的情况下,通过外部属性文件动态配置JDBC连接参数,提高了应用的可配置性和可维护性。理解并熟练运用这一特性对于任何Spring开发者来说都是至关重要的。
为了提高代码的可维护性和灵活性,通常会将数据库连接信息存储在外部属性文件中,如`application.properties`或`application.yml`。Spring Boot支持自动配置,可以从这些文件中自动加载配置。以下是在`application....
Spring支持根据激活的profile加载特定的属性文件,如`application-{profile}.properties`。这使得在不同环境中(例如开发、测试、生产)可以使用不同的配置。 6. **Cloud Config Server** 在分布式系统中,Spring...
总结起来,Spring提供了多种方式来读取应用外部的配置文件,如`FileSystemXmlApplicationContext`用于读取XML配置,`PropertyPlaceholderConfigurer`用于处理属性文件。理解这一机制有助于我们更灵活地管理应用的...
它使得我们可以在XML配置文件中使用占位符`${...}`来引用外部属性文件中的值,从而使应用配置更加灵活和可维护。下面我们将详细探讨`PropertyPlaceholderConfigurer`的工作原理、使用方法以及其在实际开发中的应用。...
- Spring Boot提供了`@ConfigurationProperties`注解,可以将配置文件中的键值对映射到Java对象的属性上,增强代码的可读性。 - 创建一个类,用`@Component`或`@Configuration`注解,并使用`@...
引导上下文负责从外部源加载配置属性,还解密本地外部配置文件中的属性。 在使用 Spring Cloud 时,需要注意到引导上下文和主应用程序上下文的区别,引导上下文使用与主应用程序上下文不同的外部配置约定。可以通过...
`PropertyPlaceholderConfigurer`是Spring早期版本中处理属性文件的工具,而`@PropertySource`则是从Spring 3.1引入的新特性,它们都可以用来从外部属性文件中读取值并注入到bean中。 1. `...
Spring允许我们从外部属性文件中加载配置,通常使用`@Value`或`@ConfigurationProperties`注解。例如,有一个名为`application.properties`的文件,其中包含文件存储路径: ```properties file.upload.path=/...
`<property>`标签用来设置bean的属性,使用`${}`表示从外部属性文件中读取值。 #### Bean引用 - `<ref bean="..."/>`: 引用另一个bean,可以从当前或导入的XML文件中查找。 - `<ref local="..."/>`: 只在当前XML...
而`placeholder`允许你使用`${property_name}`占位符,这些值可以从属性文件(如`application.properties`)中读取,这样可以在不修改XML配置的情况下轻松更改配置。 例如,你可以在配置文件中定义一个profile: `...
1. 添加依赖:在Spring Boot项目中,可以通过添加SpringSession的相关依赖到`pom.xml`或`build.gradle`文件中,比如选择Redis作为存储,添加`spring-boot-starter-data-redis`和`spring-session-data-redis`依赖。...
这些值实际上是通过`PropertyPlaceholderConfigurer`从外部属性文件中获取的。 3. **TransactionManager**:这里配置的是`HibernateTransactionManager`,它是Spring对Hibernate事务管理的支持。`sessionFactory`...