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;
分享到:
相关推荐
它支持从多个文件或URL进行读取,并将${key}类的表达式的Spring样式递归属性扩展为它们的相应值。 值表达式可以引用${key}其他键,也可以引用${USER}环境变量。 文件名还可以包含/home/${USER}/myapp.properties...
Eclipse Maven集成(M2E扩展)用于空分析配置Eclipse外部批注的路径以对Maven Dependencies和JRE容器类路径容器进行空分析,并设置JDT编译器配置: 允许从maven-compiler-plugin配置Java编译器项目属性; 从包含org....
1.3 Spring开闭原则的表现-BeanPostProcessor的扩展点-1 1.4 我对IoC/DI的理解 1.5 SpringMVC + spring3.1.1 + hibernate4.1.0 集成及常见问题总结 1.6 »Spring 之AOP AspectJ切入点语法详解(最全了,不需要再去...
GhidraX64Dbg 扩展包含Ghidra脚本,可将注释从Ghidra导出到X32 / X64数据库。潜在更好的项目更新:签出 。 他们提供的产品似乎比该项目完成的简单同步功能要强大得多,并支持更广泛的调试器和RE程序集。简易安装从...
6.扩展Properties类,添加支持注释的保存和保留文件原顺序的功能 7. Zip压缩文件工具类 8.利用反射机制进行排序工具类,支持数组、List、Set、Map的排序,可以支持多属性排序,支持子对象中的属性排序(例user对象中...
义.properties文件的注释是只有当行首的字符为“#”时认为是一个注释,否则如果行空 则认为是一个空行,其他的则认为是一个代码行。则代码如下: package count; import java.io.BufferedReader; import java.io....
该系统通过Apache Nutch和Solr以及Htmlunit, Selenium WebDriver等组件扩展,实现了对于AJAX加载类型页面的完整页面内容爬取、解析、清洗、持久化、全文检索等处理。项目结构清晰,代码注释详尽,适合用于学习和研究...
4.程序中使用的是spring mvc注解的方式,可扩展的地方也很多,我是从网上下的maven项目,然后自己改成web项目,除了整个架子外,其他的都是我自己的东西 5.目前能实现的功能就是走一个流程,适合初学者研究 我深知...
授权模块,支持CAS单点登录,简单properties配置即可,不用再写很多的xml。 支持多数据源,简单properties配置即可实现,为了安全性吧,暂不提供界面维护数据源,不存数据库。 数据表主键优化,如分类科目表,采用有...
基于SSM搭建的Java后台模板(MyBatis相关代码引入mybatis-generator自动构建,只需要修改jdbc.properties中的数据库连接属性,在generatorConfig.xml中配置相应的table即可),可以直接下载使用。日志框架用的是...
a)自定义配置文件需采用指定资源地址:report/report-config.properties b)REPORT_SWITCH:true 则开启,反之关闭 默认开启 c)FILETER:自定义过滤器,多个以逗号隔开 d)JSON_BOAY:json数据请求方式key名称,默认为...
金翅雀 Goldfinch生成kotlin... 要遍历Person的属性,可以使用生成的扩展属性Person#properties如下所示: val person = Person ( " Selim " , LocalDate .of( 1970 , 1 , 1 )) person.properties .forEach { prop
您只需要为每个表定义一个POJO,它必须扩展ActiveRecord类,并使用提供的注释对其进行配置。 完成此操作后,您的POJO将获得以下功能: 提取-从primaryKey和secondaryKey检索项目删除-删除项目保存-更新或创建项目...
修改默认的beanName生成策略,controller参数扩展 1.0.14 分布式session使用zookeeper 1.0.15 zookeeper工具类优化 增加工具类 1.0.16 页面html标志修改 httpclient中文支持 工具类增强(zip,reflect,thread) 1.0.17 ...
这个配置可能是一个 JSON 文档或一个“结构化属性”文档,它是配置文件的 .properties 样式的扩展。 建议使用 JSON,有关结构化属性方言的示例,请参阅tests/testConf.properties 。 这是 JSON 格式的示例配置...
一种存储介质可扩展的持久化重试方案 Getting started Memory Retry 增加pom依赖 <groupId>com.alibaba</groupId> <artifactId>easy-retry-memory-starter <version>1.0.0.RC3 在application.properties增加...
获取新闻列表 获取单个新闻 获取类别列表 获取按标题或按日期时间或进行多次订购排序仅通过注释进行配置。 您无需执行任何操作! * @T3api\ApiFilter(* OrderFilter::class,* properties={"uid","title","d
2.4 properties配置文件乱码问题 24 2.5 @ConfigurationProperties与@Value的区别 25 2.6 配置@PropertySource、@ImportResource、@Bean 27 2.7 配置文件占位符 30 2.8 Profile多环境支持 31 2.9 配置文件的加载位置...
修改默认的beanName生成策略,controller参数扩展 1.0.14 分布式session使用zookeeper 1.0.15 zookeeper工具类优化 增加工具类 1.0.16 页面html标志修改 httpclient中文支持 工具类增强(zip,reflect,thread) 1.0.17 ...
自动从数据库中获取表名/表注释/列名/列注释/列类型等等相关信息 示例:由角色表生成domain对象 模版: package $!{package}.domain; import java.util.Date; /** * $!system * @author $!author * @...