`
network-eagle
  • 浏览: 59750 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

扩展 properties 注解

阅读更多
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;
分享到:
评论

相关推荐

    能保存Properties文件注释的Properties工具类

    `CommentedProperties`是基于Java的自定义Properties扩展,它的核心功能在于加载和保存文件时能够识别并保留注释。在标准的Properties类中,`load()`方法会跳过所有非键值对的行,而`store()`方法则只会写入键值对,...

    Properties 文件比较工具

    5. **注释处理**:properties文件中的行首#表示注释,比较时通常会忽略这些注释行。 总之,“Properties文件比较工具”是Java开发中一个实用的小型应用,它利用了Java标准库提供的`Properties`类,为开发者提供了...

    java修改Properties文件,让输出格式与输入格式保持不变

    总结来说,这篇博客主要介绍了如何通过扩展Java的Properties类来保持Properties文件的原始格式。通过自定义的`SafeProperties`类,我们可以确保在处理配置文件时,无论是加载还是保存,都不会破坏原有的注释和行顺序...

    myeclipse插件properties插件

    1. **语法高亮**:使`properties`文件中的关键字、注释和变量具有不同的颜色,提高代码可读性。 2. **代码折叠**:允许用户折叠不常查看的部分,专注于当前工作的关键部分。 3. **自动完成**:在输入键值对时,提供...

    java读取properties六种方法

    文件名不包含扩展名,且假设文件位于类路径下。 3. **使用Class.getResourceAsStream()** 这种方法适用于文件位于类路径中的情况: ```java Properties prop = new Properties(); InputStream is = getClass()...

    引入多个properties时.txt

    在Java代码中可以通过`@Value`注解来注入`properties`文件中的值: ```java import org.springframework.beans.factory.annotation.Value; public class SomeService { @Value("${driver}") private String ...

    Java源码读写Properties文件.rar

    Properties文件通常以`.properties`为扩展名,其内容是UTF-8编码的文本,每行包含一个键值对,键和值之间由等号或冒号分隔。 ### 读取Properties文件 读取Properties文件的主要方法是`Properties.load(Reader)`或`...

    读取properties文件

    `properties`文件通常以`.properties`为扩展名,内容由键值对组成,键和值之间用等号`=`或冒号`:`分隔,每行一个键值对。例如: ``` username=admin password=123456 ``` 文件中可以包含注释,注释以`#`或`!`...

    properties读取工具类设计

    为了方便在Spring框架中使用,我们可以为工具类添加一个`@ConfigurationProperties`注解的JavaBean,将`properties`文件内容映射到对象上: ```java @Configuration @ConfigurationProperties(prefix = "app") ...

    SSM 读取properties文件

    在Java开发领域,尤其是SSM(Spring、SpringMVC、MyBatis)框架的使用中,配置文件的管理是...通过`PropertyPlaceholderConfigurer`和`@Value`注解,我们可以轻松地管理配置信息,使项目结构更加清晰,易于扩展和维护。

    eclipse的properties文件插件

    `properties`文件插件是Eclipse或MyEclipse的一个扩展,它提供了一系列增强的功能,以帮助开发者更方便地处理`.properties`文件。这些文件主要用于存储程序中的字符串,如用户界面的标签、消息和错误提示,使得软件...

    读取以及修改properties文件

    在Java编程中,Properties文件是用于存储配置信息的文本文件,通常以.properties为扩展名。这些文件包含了应用程序运行时所需的键值对,如数据库连接字符串、API密钥或系统设置等。本篇将深入探讨如何读取和修改...

    Java Properties 解决中文乱码和顺序读写.docx

    配置文件通常以`.properties`为扩展名,采用文本格式,每行包含一个键值对,键和值之间以等号(`=`)分隔,注释则以井号(`#`)开头。 Properties 类继承自 Hashtable,因此它拥有字典类的一些基本功能,如添加、删除、...

    java操作properties文件

    它主要被用来读取和写入配置文件,这些文件通常以.properties为扩展名。Properties类包含了加载和保存属性列表的方法,支持国际化(i18n)和本地化(l10n)。 二、Properties文件格式 Properties文件是一种文本文件,每...

    谈谈Spring 注入properties文件总结

    Spring框架在处理应用程序的配置和依赖注入方面非常强大,它允许开发者从外部的properties文件中加载配置信息,以便于管理...无论是传统的XML配置还是现代的注解方式,都体现了Spring对开发者友好性和可扩展性的追求。

    myeclipse properties插件

    作为注释符。 3. **国际化与本地化**:在Java应用中,.properties文件常用于存储不同语言的文本资源,如消息、提示等,以实现应用的全球化。 4. **版本控制系统**:如Git和SVN,它们是开发团队协作中常用到的工具...

    读取Properties信息工具类

    - 属性文件通常以`.properties`为扩展名,采用键值对的形式,例如:`key=value`。这种格式非常适合存储配置信息或系统参数。 2. **加载Properties文件**: - 使用`Properties.load(InputStream)`方法可以从输入流...

    java读取.properties配置文件的几种方法

    在这里,配置文件名(不包括扩展名)作为`getBundle()`的参数,它会自动在类路径下寻找对应的`.properties`文件。 3. 使用`java.nio`包 Java NIO(New IO)提供了一种更现代的I/O方式,可以用来读取配置文件。 ...

    spring中properties加密

    Java Cryptography Extension是Java平台的一个标准扩展,提供了加密算法,如AES(高级加密标准)等。首先,确保你的JRE安装包含JCE且不受限制,或者下载并替换不受限制的JCE政策文件。 3. **定义加密和解密工具类*...

    Properties类小结

    comments参数是可选的,用于在文件开头添加注释。 3. `getProperty(String key)`:根据给定的键获取对应的值。如果找不到对应的键,则返回null。 4. `setProperty(String key, String value)`:向Properties对象中...

Global site tag (gtag.js) - Google Analytics