1:创建注解
/**
*
* @author ZhangKaiTao
*
*/
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Properties {
String name();
}
2:扩展
/**
*
* @author ZhangKaiTao
*
*/
public class AnnotationBeanPostProcessor extends PropertyPlaceholderConfigurer
implements BeanPostProcessor, InitializingBean {
private static transient Log logger = LogFactory
.getLog(AnnotationBeanPostProcessor.class);
private java.util.Properties pros;
@SuppressWarnings("unchecked")
private Class[] enableClassList = { String.class };
@SuppressWarnings("unchecked")
public void setEnableClassList(Class[] enableClassList) {
this.enableClassList = enableClassList;
}
public Object postProcessAfterInitialization(Object bean, String beanName)
throws BeansException {
Field[] fields = bean.getClass().getDeclaredFields();
for (Field field : fields) {
if (field.isAnnotationPresent(Properties.class)) {
if (filterType(field.getType().toString())) {
Properties p = field.getAnnotation(Properties.class);
try {
ReflectionUtils.makeAccessible(field);
field.set(bean, pros.getProperty(p.name()));
} catch (Exception e) {
logger.error(" --- ", e);
}
}
}
}
return bean;
}
@SuppressWarnings("unchecked")
private boolean filterType(String type) {
if (type != null) {
for (Class c : enableClassList) {
if (c.toString().equals(type)) {
return true;
}
}
return false;
} else {
return true;
}
}
public Object postProcessBeforeInitialization(Object bean, String beanName)
throws BeansException {
return bean;
}
public void afterPropertiesSet() throws Exception {
pros = mergeProperties();
}
}
3:配置
<bean id="propertyConfigurer" class="withub.system.versioncontrol.com.AnnotationBeanPostProcessor" scope="singleton">
<property name="locations">
<list>
<value>classpath:db.properties</value>
</list>
</property>
</bean>
4:使用
@Properties(name="fydm")
private String fydm;
分享到:
相关推荐
`CommentedProperties`是基于Java的自定义Properties扩展,它的核心功能在于加载和保存文件时能够识别并保留注释。在标准的Properties类中,`load()`方法会跳过所有非键值对的行,而`store()`方法则只会写入键值对,...
5. **注释处理**:properties文件中的行首#表示注释,比较时通常会忽略这些注释行。 总之,“Properties文件比较工具”是Java开发中一个实用的小型应用,它利用了Java标准库提供的`Properties`类,为开发者提供了...
总结来说,这篇博客主要介绍了如何通过扩展Java的Properties类来保持Properties文件的原始格式。通过自定义的`SafeProperties`类,我们可以确保在处理配置文件时,无论是加载还是保存,都不会破坏原有的注释和行顺序...
1. **语法高亮**:使`properties`文件中的关键字、注释和变量具有不同的颜色,提高代码可读性。 2. **代码折叠**:允许用户折叠不常查看的部分,专注于当前工作的关键部分。 3. **自动完成**:在输入键值对时,提供...
文件名不包含扩展名,且假设文件位于类路径下。 3. **使用Class.getResourceAsStream()** 这种方法适用于文件位于类路径中的情况: ```java Properties prop = new Properties(); InputStream is = getClass()...
在Java代码中可以通过`@Value`注解来注入`properties`文件中的值: ```java import org.springframework.beans.factory.annotation.Value; public class SomeService { @Value("${driver}") private String ...
Properties文件通常以`.properties`为扩展名,其内容是UTF-8编码的文本,每行包含一个键值对,键和值之间由等号或冒号分隔。 ### 读取Properties文件 读取Properties文件的主要方法是`Properties.load(Reader)`或`...
`properties`文件通常以`.properties`为扩展名,内容由键值对组成,键和值之间用等号`=`或冒号`:`分隔,每行一个键值对。例如: ``` username=admin password=123456 ``` 文件中可以包含注释,注释以`#`或`!`...
为了方便在Spring框架中使用,我们可以为工具类添加一个`@ConfigurationProperties`注解的JavaBean,将`properties`文件内容映射到对象上: ```java @Configuration @ConfigurationProperties(prefix = "app") ...
在Java开发领域,尤其是SSM(Spring、SpringMVC、MyBatis)框架的使用中,配置文件的管理是...通过`PropertyPlaceholderConfigurer`和`@Value`注解,我们可以轻松地管理配置信息,使项目结构更加清晰,易于扩展和维护。
`properties`文件插件是Eclipse或MyEclipse的一个扩展,它提供了一系列增强的功能,以帮助开发者更方便地处理`.properties`文件。这些文件主要用于存储程序中的字符串,如用户界面的标签、消息和错误提示,使得软件...
在Java编程中,Properties文件是用于存储配置信息的文本文件,通常以.properties为扩展名。这些文件包含了应用程序运行时所需的键值对,如数据库连接字符串、API密钥或系统设置等。本篇将深入探讨如何读取和修改...
配置文件通常以`.properties`为扩展名,采用文本格式,每行包含一个键值对,键和值之间以等号(`=`)分隔,注释则以井号(`#`)开头。 Properties 类继承自 Hashtable,因此它拥有字典类的一些基本功能,如添加、删除、...
它主要被用来读取和写入配置文件,这些文件通常以.properties为扩展名。Properties类包含了加载和保存属性列表的方法,支持国际化(i18n)和本地化(l10n)。 二、Properties文件格式 Properties文件是一种文本文件,每...
Spring框架在处理应用程序的配置和依赖注入方面非常强大,它允许开发者从外部的properties文件中加载配置信息,以便于管理...无论是传统的XML配置还是现代的注解方式,都体现了Spring对开发者友好性和可扩展性的追求。
作为注释符。 3. **国际化与本地化**:在Java应用中,.properties文件常用于存储不同语言的文本资源,如消息、提示等,以实现应用的全球化。 4. **版本控制系统**:如Git和SVN,它们是开发团队协作中常用到的工具...
- 属性文件通常以`.properties`为扩展名,采用键值对的形式,例如:`key=value`。这种格式非常适合存储配置信息或系统参数。 2. **加载Properties文件**: - 使用`Properties.load(InputStream)`方法可以从输入流...
在这里,配置文件名(不包括扩展名)作为`getBundle()`的参数,它会自动在类路径下寻找对应的`.properties`文件。 3. 使用`java.nio`包 Java NIO(New IO)提供了一种更现代的I/O方式,可以用来读取配置文件。 ...
Java Cryptography Extension是Java平台的一个标准扩展,提供了加密算法,如AES(高级加密标准)等。首先,确保你的JRE安装包含JCE且不受限制,或者下载并替换不受限制的JCE政策文件。 3. **定义加密和解密工具类*...
comments参数是可选的,用于在文件开头添加注释。 3. `getProperty(String key)`:根据给定的键获取对应的值。如果找不到对应的键,则返回null。 4. `setProperty(String key, String value)`:向Properties对象中...