spring的BeanWrapper类的原理和使用方法
转自:http://blog.sina.com.cn/s/blog_79ae79b30100t4hh.html
如果动态设置一个对象属性,可以借助Java的Reflection机制完成:
Class cls = Class.forName("packageAname.subPackage.ClassName");
Method mtd = cls.getMethod("methodName",new Class[]{String.class});
Object obj = (Object)cls.newInstance();
mtd.invoke(obj,new Object[]{....});
return obj;
假设这些常量比如类名和方法名都是通过配置文件读入,那我们就实现了一个最简单的BeanWrapper。这个BeanWrapper的功能很简单,提供一个设置JavaBean属性的通用方法(Apache BeanUtils 类库中提供了大量针对Bean的辅助工具,如果有兴趣可以下载一份源码加以研读)。Spring BeanWrapper基于同样的原理,提供了一个更加完善的实现。
Object obj = Class.forName("packageAname.subPackage.ClassName").newInstance();
BeanWrapper bw = new BeanWrapperImpl(obj);
bw.setPropertyValue("propertyName", "updateValue");//propertyName属性名称,updateValue属性值
System.out.println(bw.getPropertyValue("propertyName"));
转载于:https://www.cnblogs.com/sharpest/p/7868862.html
spring的BeanWrapper类的原理和使用方法相关推荐
- Spring 容器AOP的实现原理——动态代理
本文来自极客学院 Spring 容器AOP的实现原理--动态代理 之前写了一篇关于IOC的博客--<Spring容器IOC解析及简单实现>,今天再来聊聊AOP.大家都知道Spring的两大 ...
- 17、Spring Boot普通类调用bean【从零开始学Spring Boot】
转载:http://blog.csdn.net/linxingliang/article/details/52013017 我们知道如果我们要在一个类使用spring提供的bean对象,我们需要把这个 ...
- spring boot中servlet启动原理
启动过程及原理 1 spring boot 应用启动运行run方法 StopWatch stopWatch = newStopWatch();stopWatch.start();Configurabl ...
- Spring Boot的自动化配置原理
转载自 Spring Boot的自动化配置原理 随着Ruby.Groovy等动态语言的流行,相比较之下Java的开发显得格外笨重.繁多的配置.低下的开发效率.复杂的部署流程以及第三方技术集成难度大等问 ...
- Spring Enable*高级应用及原理
转载自 Spring Enable*高级应用及原理 Enable* 之前的文章用到了一些Enable*开头的注解,比如EnableAsync.EnableScheduling.EnableAspect ...
- spring boot 启动类
做项目用到spring boot 感觉spring boot用起来比较流畅.想总结一下,别的不多说,从入口开始. spring boot启动类Application.class 不能直接放在main/ ...
- Spring事务管理(二)-TransactionProxyFactoryBean原理
2019独角兽企业重金招聘Python工程师标准>>> 通常Spring事务管理的配置都是XML或者声明式注解的方式,然后想要学习其运行的原理,从TransactionProxyFa ...
- Spring读取xml配置文件的原理与实现
2019独角兽企业重金招聘Python工程师标准>>> Spring读取xml配置文件的原理与实现 本篇博文的目录: 一:前言 二:spring的配置文件 三:依赖的第三方库.使用技 ...
- springboot自动配置原理_今日份学习之Spring Boot自动配置实现原理
通过前面章节的学习,我们掌握了使用Spring Boot框架进行实际应用开发的方法.在使用Spring Boot 的过程中,我们时常会为一些看似简单,但实际上蕴藏了强大功能的实现而惊呼,下面就让我们来 ...
最新文章
- Keras入门(一)搭建深度神经网络(DNN)解决多分类问题
- 【错误记录】Google Play 上架报错 ( 您上传的 APK 没有经过 Zipalign 处理,请对 APK 运行 Zipalign 工具,然后重新上传。)
- Windows 10如何禁用Microsoft Edge标签页预览
- PIC单片机 IIC通信及实现
- 程序员面试题精选100题(28)-字符串的排列[算法]
- C++程序的执行过程
- 移动html特殊链接【打电话_发短信_发邮件】
- 1155: 零起点学算法62——输出矩阵
- 【BIRT】使用rptlibrary设置统一数据源
- <table/>默认适应内容宽度造成滚动条不显示的解决方法
- 「初步」Spring与commons的BeanUtil.copyProperties
- 【牛客 - 331E】炫酷划线(权值线段树,树状数组哈希,随机数)
- android studio开源代码,Android Studio Set of source 代码源集
- python if name main 的作用_Python中if __name__ == '__main__':的作用和原理
- 零基础开始学前端有什么建议?
- 随想录(学习英文的好处)
- Win7安装 Rational Rose软件
- 不知道如何做好精益生产管理?可能是你的企业还没有进行工时分析
- 广告管理系统-数据库表设计
- 华为服务器自检信息怎么开,服务器开机自检内存