自定义注解如何解析配置文件代码示例
时间: 2023-11-16 09:14:41 浏览: 74
下面是一个自定义注解解析配置文件的示例代码:
定义注解:
```java
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface ConfigProperty {
String value();
}
```
使用注解:
```java
public class AppConfig {
@ConfigProperty("app.name")
private String appName;
@ConfigProperty("app.version")
private int appVersion;
// 省略 getter 和 setter 方法
public void loadConfig(String fileName) throws IOException {
Properties props = new Properties();
props.load(new FileInputStream(fileName));
Field[] fields = this.getClass().getDeclaredFields();
for (Field field : fields) {
if (field.isAnnotationPresent(ConfigProperty.class)) {
ConfigProperty configProperty = field.getAnnotation(ConfigProperty.class);
String propertyName = configProperty.value();
String propertyValue = props.getProperty(propertyName);
if (propertyValue != null) {
try {
if (field.getType() == String.class) {
field.set(this, propertyValue);
} else if (field.getType() == int.class) {
int value = Integer.parseInt(propertyValue);
field.setInt(this, value);
}
} catch (IllegalArgumentException | IllegalAccessException e) {
e.printStackTrace();
}
}
}
}
}
}
```
在上面的代码中,loadConfig() 方法会根据注解中指定的配置文件中的属性名,获取对应的属性值,并根据属性类型将属性值赋值给对应的字段。如果配置文件中没有对应的属性名,则不做任何处理。
阅读全文