需求:
像数据库密码,一般不能在属性文件中明文表示。那么需要将密码加密,在配置文件中配置加密后的密文。运行时候,加载属性文件后再将密文还原为明文,提供给jdbc驱动作为连接数据库参数。
实现:
java:
public class DecryptPropertyPlaceholderConfigurer extends PropertyPlaceholderConfigurer { @Override protected void processProperties(ConfigurableListableBeanFactory beanFactoryToProcess, Properties props) throws BeansException { Properties p = decodeProperties(props);//此处解密属性 super.processProperties(beanFactoryToProcess, p); } }
xml配置:
<!-- 原来占位符属性 <bean id="webframe.datasource.config" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> --> <bean id="webframe.datasource.config" class="com.skyon.webframe.config.DecryptPropertyPlaceholderConfigurer"> <property name="order" value="1" /> <property name="ignoreUnresolvablePlaceholders" value="true" /> <property name="properties" ref="mm" /> <!-- mm此处属性使用密文--> </bean>
相关推荐
在Spring框架中,属性占位符`PropertyPlaceholderConfigurer`是一个重要的工具,用于处理配置文件中的属性值引用。它使得我们可以在XML配置文件中使用占位符`${...}`来引用外部属性文件中的值,从而使应用配置更加...
在Spring框架中,**属性占位符配置器**(Property Placeholder Configurator)是一种强大的配置工具,它允许开发者在配置文件中使用占位符来引用外部属性文件中的值,从而实现了配置的动态化和灵活性。这一特性在处理...
本文将深入探讨Spring Boot的环境属性占位符解析以及类型转换的过程,帮助你更好地理解和利用这些功能。 首先,让我们来看一下属性占位符解析。在Spring Boot中,属性可以引用其他属性,通过`${}`语法实现,例如`${...
在Spring框架中,属性覆盖占位符配置器(PropertyOverrideConfigurer)是一个非常实用的工具,它允许我们在不修改Spring配置文件的情况下,通过外部属性文件来动态地覆盖Bean的属性值。这种方式增强了应用的灵活性...
它支持SpEL表达式,并且可以解析${...}占位符形式的属性值。 4. **`Environment` 和 `PropertySourcesPlaceholderConfigurer`** `Environment`接口提供了获取属性的方法,可以在运行时动态获取属性值。`...
3. **处理嵌套占位符**:如果属性值中还包含其他占位符,会递归地进行替换,直到没有占位符为止。 4. **处理默认值**:如果某个占位符找不到对应的属性值,可以设置`ignoreUnresolvablePlaceholders`属性为`true`来...
- 使用`@Value`注解:可以直接在字段或方法参数上使用`@Value`注解,Spring会自动注入对应的属性值。例如,`@Value("${property.name}")`。 - 使用`@ConfigurationProperties`:针对复杂配置,可以创建一个Java类...
这些信息通常存储在`.properties`文件中,并通过占位符`${}`引用到Spring配置文件中。然而,对于敏感信息,如密码、API密钥等,直接明文存储在属性文件中存在安全风险。为了保护这些数据,我们需要采取加密措施。 ...
至于“工具”标签,可能是指Spring提供的各种工具类,如`PropertySourcesPlaceholderConfigurer`,它是一个Bean后处理器,用于解析`@Value`注解中的占位符。 综上所述,"spring简单属性"涵盖了Spring框架中如何管理...
`ignoreUnresolvablePlaceholders`属性用于控制是否忽略无法解析的占位符,默认情况下如果Spring无法找到占位符对应的属性值,将会抛出异常。 ### 总结 通过上述介绍,可以看出Spring框架提供了灵活的方式来处理多...
在Spring框架中,有多种方式可以读取配置文件属性,本文将介绍其中两种常见的方法:使用 `@PropertySource` 注解和使用占位符获取配置文件属性。 二、使用 @PropertySource 注解读取配置文件 使用 `@Property...
Spring Environment 抽象是Spring框架中的一个重要组成部分,它为应用程序提供了环境相关的配置信息,包括属性值的占位符处理、类型转换以及条件化的Bean装配管理。这一抽象在Spring 3.1版本中引入,旨在统一处理...
`PropertyPlaceholderConfigurer`是一个Bean定义后处理器,它会替换Bean定义中的占位符(如`${key}`)为属性文件中的值。而`@PropertySource`注解可以直接在类级别上声明,指示Spring从指定的属性文件中读取属性。 ...
PropertyResolver的主要职责是根据属性名称获取对应的属性值,并能处理${...}格式的属性占位符,将它们替换为实际的值。 PropertyResolver接口提供了以下主要功能: 1. `getProperty(String propertyName)`: 这个...
`PropertyPlaceholderConfigurer`允许我们在XML配置文件中使用 `${property}` 形式的占位符,这些占位符的值会在运行时被VM参数或系统属性替换。 例如,我们可以在XML配置中这样使用: ```xml ...
- **PropertyPlaceholderConfigurer** 和 **PropertyOverrideConfigurer**:用于在运行时动态替换Bean配置中的占位符。 ### 结论 Spring框架以其强大的功能和灵活性,成为Java企业级应用开发的首选框架之一。通过...
这里`${sysId}`是一个占位符,表示从配置文件中读取名为`sysId`的属性值。 ```java import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org....
5. **Parameterized Queries(参数化查询)**: Spring JDBC支持使用占位符(例如问号`?`)的参数化查询,可以防止SQL注入攻击,并简化SQL语句的编写。 6. **RowMapper**: 这是一个接口,用于将结果集的每一行映射为...
- **属性占位符**:Spring支持使用占位符来引用外部配置文件中的值,增强了系统的灵活性。 #### 五、面向切面编程(AOP) - **AOP基础**:面向切面编程是一种编程范式,它将横切关注点从业务逻辑中分离出来,提高...