- 浏览: 2652587 次
- 来自: 杭州
文章分类
- 全部博客 (1188)
- webwork (4)
- 网摘 (18)
- java (103)
- hibernate (1)
- Linux (85)
- 职业发展 (1)
- activeMQ (2)
- netty (14)
- svn (1)
- webx3 (12)
- mysql (81)
- css (1)
- HTML (6)
- apache (3)
- 测试 (2)
- javascript (1)
- 储存 (1)
- jvm (5)
- code (13)
- 多线程 (12)
- Spring (18)
- webxs (2)
- python (119)
- duitang (0)
- mongo (3)
- nosql (4)
- tomcat (4)
- memcached (20)
- 算法 (28)
- django (28)
- shell (1)
- 工作总结 (5)
- solr (42)
- beansdb (6)
- nginx (3)
- 性能 (30)
- 数据推荐 (1)
- maven (8)
- tonado (1)
- uwsgi (5)
- hessian (4)
- ibatis (3)
- Security (2)
- HTPP (1)
- gevent (6)
- 读书笔记 (1)
- Maxent (2)
- mogo (0)
- thread (3)
- 架构 (5)
- NIO (5)
- 正则 (1)
- lucene (5)
- feed (4)
- redis (17)
- TCP (6)
- test (0)
- python,code (1)
- PIL (3)
- guava (2)
- jython (4)
- httpclient (2)
- cache (3)
- signal (1)
- dubbo (7)
- HTTP (4)
- json (3)
- java socket (1)
- io (2)
- socket (22)
- hash (2)
- Cassandra (1)
- 分布式文件系统 (5)
- Dynamo (2)
- gc (8)
- scp (1)
- rsync (1)
- mecached (0)
- mongoDB (29)
- Thrift (1)
- scribe (2)
- 服务化 (3)
- 问题 (83)
- mat (1)
- classloader (2)
- javaBean (1)
- 文档集合 (27)
- 消息队列 (3)
- nginx,文档集合 (1)
- dboss (12)
- libevent (1)
- 读书 (0)
- 数学 (3)
- 流程 (0)
- HBase (34)
- 自动化测试 (1)
- ubuntu (2)
- 并发 (1)
- sping (1)
- 图形 (1)
- freemarker (1)
- jdbc (3)
- dbcp (0)
- sharding (1)
- 性能测试 (1)
- 设计模式 (2)
- unicode (1)
- OceanBase (3)
- jmagick (1)
- gunicorn (1)
- url (1)
- form (1)
- 安全 (2)
- nlp (8)
- libmemcached (1)
- 规则引擎 (1)
- awk (2)
- 服务器 (1)
- snmpd (1)
- btrace (1)
- 代码 (1)
- cygwin (1)
- mahout (3)
- 电子书 (1)
- 机器学习 (5)
- 数据挖掘 (1)
- nltk (6)
- pool (1)
- log4j (2)
- 总结 (11)
- c++ (1)
- java源代码 (1)
- ocr (1)
- 基础算法 (3)
- SA (1)
- 笔记 (1)
- ml (4)
- zokeeper (0)
- jms (1)
- zookeeper (5)
- zkclient (1)
- hadoop (13)
- mq (2)
- git (9)
- 问题,io (1)
- storm (11)
- zk (1)
- 性能优化 (2)
- example (1)
- tmux (1)
- 环境 (2)
- kyro (1)
- 日志系统 (3)
- hdfs (2)
- python_socket (2)
- date (2)
- elasticsearch (1)
- jetty (1)
- 树 (1)
- 汽车 (1)
- mdrill (1)
- 车 (1)
- 日志 (1)
- web (1)
- 编译原理 (1)
- 信息检索 (1)
- 性能,linux (1)
- spam (1)
- 序列化 (1)
- fabric (2)
- guice (1)
- disruptor (1)
- executor (1)
- logback (2)
- 开源 (1)
- 设计 (1)
- 监控 (3)
- english (1)
- 问题记录 (1)
- Bitmap (1)
- 云计算 (1)
- 问题排查 (1)
- highchat (1)
- mac (3)
- docker (1)
- jdk (1)
- 表达式 (1)
- 网络 (1)
- 时间管理 (1)
- 时间序列 (1)
- OLAP (1)
- Big Table (0)
- sql (1)
- kafka (1)
- md5 (1)
- springboot (1)
- spring security (1)
- Spring Boot (3)
- mybatis (1)
- java8 (1)
- 分布式事务 (1)
- 限流 (1)
- Shadowsocks (0)
- 2018 (1)
- 服务治理 (1)
- 设计原则 (1)
- log (0)
- perftools (1)
最新评论
-
siphlina:
课程——基于Python数据分析与机器学习案例实战教程分享网盘 ...
Python机器学习库 -
san_yun:
leibnitz 写道hi,我想知道,无论在92还是94版本, ...
hbase的行锁与多版本并发控制(MVCC) -
leibnitz:
hi,我想知道,无论在92还是94版本,更新时(如Puts)都 ...
hbase的行锁与多版本并发控制(MVCC) -
107x:
不错,谢谢!
Latent Semantic Analysis(LSA/ LSI)算法简介 -
107x:
不错,谢谢!
Python机器学习库
spring作为一个beanFactory,免不了要做类型转化,这些工作都是委托给BeanWrapper
先来看一个简单的例子:
Blog object = new Blog(); BeanWrapper bean = new BeanWrapperImpl(object); bean.setPropertyValue("id", "1"); bean.setPropertyValue("buyable", "true"); System.out.println(object.getId()); System.out.println(object.isBuyable());
BeanWrapper具体又是怎么做类型转换的呢?其实是通过PropertyEditorSupport,这个类实现了PropertyEditor,它有各种类型的继承类,比如CustomNumberEditor,CustomDateEditor分别处理Number和日志类型。
另外spring还提供了很多助手方法来获取bean的信息,比如要获取一个方法的参数信息:
PropertyDescriptor pd = bean.getPropertyDescriptor(propertyName);
MethodParameter mp = BeanUtils.getWriteMethodParameter(pd);
查看一个bean是否可写:
bean.isWritableProperty()
当然,最强大的是能嵌套设置属性,如:
//tb中有个spouse的属性,也为TestBean,这样
bw.setPropertyValue("spouse.name", "tom");
//等价于tb.getSpouse().setName("tom");
//bw 同样支持数组和集合,map属性设置
bw.getPropertyValue("array[0].name");
bw.getPropertyValue("map[key4][0].name");
beans包 还提供了一个PropertyValues用于保存多个属性值,默认的实现MutablePropertyValues
MutablePropertyValues pvs = new MutablePropertyValues();
pvs.addPropertyValue("array[0].name", "name5");
pvs.addPropertyValue("array[1].name", "name4");
bw.setPropertyValues(pvs);
参考:http://www.iteye.com/topic/43048
发表评论
-
Spring JdbcTemplate执行过程分析
2013-07-08 16:38 1657调用入口 调用JdbcTemplate提供的API都会委 ... -
servlet 整合freemarkder
2013-04-18 15:51 1866Servlet与FreeMarker整合 ht ... -
spring schema文档
2013-03-15 17:26 790spring schema 扩展 基于Spri ... -
Spring Resource接口总结
2013-01-17 11:52 809Spring 通过Resource接口对资源进行抽象,资源可 ... -
spring mvc 快速启动
2012-12-30 00:33 1060依赖: <dependency> ... -
spring 框架快速启动
2012-12-18 18:36 11021. 通过maven新建工程 2. 添加依赖包 &l ... -
spring mvc异常吃掉的问题
2012-11-21 16:21 21646今天发现spring mvc把一个view参数匹配异常(org ... -
spring的FactoryBean机制
2012-11-20 16:18 1221spring可以通过的FactoryBean的形式把一个Fac ... -
spring 3.0.5.RELEASE版本的bug
2012-10-26 11:05 1154启动报错: org.springframework.be ... -
Spring 创建bean的过程
2012-10-11 09:42 1068BeanFacotry ApplicationConte ... -
Spring中ref local与ref bean区别:
2012-10-08 11:34 725Spring中ref local与ref bean区别 ... -
Spring Security授权 AccessDecisionManager
2012-08-13 18:35 8780在前面那篇博客有一段配置: <http aut ... -
Spring Security入门
2012-08-13 15:52 1203参考官方文档(http://www.mossle.com/do ... -
Spring对Ibatis的封装
2012-08-12 18:04 1720spring 对ibatis的封装通过SqlMapClient ... -
三个类实现通过spring启动web容器
2012-02-27 17:29 2309对于struts2这样的web框架,需要整合spring来管理 ... -
PathMatchingResourcePatternResolver
2012-02-27 16:40 9163PathMatchingResourcePatternReso ... -
Spring 记录
2012-02-27 16:12 1220MethodParameter BeansWrappe ...
相关推荐
总结来说,Spring 的类型转换机制是一个强大而灵活的系统,它涵盖了从传统的 `PropertyEditor` 到现代的 `Converter` 和 `GenericConverter` 接口。理解并掌握这一机制,可以帮助开发者更好地处理应用程序中的类型...
数据绑定的核心在于`PropertyEditor`,这是Spring用来进行类型转换的关键组件。当我们尝试将字符串或者其他非基本类型的数据赋值给一个JavaBean的属性时,Spring会查找合适的`PropertyEditor`来完成转换。这个过程在...
Spring的类型转换系统允许应用在运行时转换数据类型。 Spring AOP(面向切面编程)部分介绍了Spring AOP的编程模型,以及@AspectJ注解支持和基于XML的AOP配置。Spring AOP允许开发者将横切关注点(cross-cutting ...
- **Spring类型转换**:Spring支持多种类型转换策略。 - **Spring字段格式化**:如何格式化日期等类型字段。 - **配置全局Date和Time格式**:统一配置日期时间格式。 - **SpEL(Spring Expression Language)** -...
Gwt-Bean 是一个针对 Google Web Toolkit (GWT) 平台设计的库,它借鉴了 Spring 框架中的 BeanWrapper 概念,旨在帮助开发者更方便地处理 Java 对象与 JavaScriptObject 之间的交互。在 GWT 开发中,由于浏览器端...
- **通用的类型转换和数据格式化系统:** 引入了一个新的类型转换和数据格式化系统,提高了数据处理的灵活性。 - **数据层的改进:** 包括对 JDBC 的进一步封装,以及对 ORM 框架的更好支持。 - **Web 层的改进:** ...
然而,当类型不匹配时,BeanWrapper会抛出`org.springframework.beans.TypeMismatchException`异常。 2. **DataBinder实现**: DataBinder是Spring提供的更高级别的数据绑定工具,它不仅包含了BeanWrapper的功能,...
7.3.2. Spring里的通知类型 7.3.2.1. 拦截around通知 7.3.2.2. 前置通知 7.3.2.3. 异常通知 7.3.2.4. 后置通知 7.3.2.5. 引入通知 7.4. Spring里的advisor(Advisor) API 7.5. 使用ProxyFactoryBean创建AOP代理 ...
1.5.4 通用类型转换系统和属性格式化系统 1.5.5 数据访问层新增OXM功能 1.5.6 Web层的增强 1.5.7 其他 1.6 Spring对Java版本的要求 1.7 如何获取Spring 1.8 小结 第2章 快速入门 2.1 实例功能概述 2.1.1 比Hello ...
- 在Spring框架中,BeanWrapper广泛应用于Bean的属性填充、验证以及转换等场景。 - 它简化了对复杂对象模型的操作,尤其是在处理多层嵌套的Bean时尤为明显。 #### 四、Bean的制造工厂:BeanFactory与...
- **BeanWrapper**:提供了一种封装Bean的方法,允许操作Bean的属性,包括读取、设置和转换。它是Spring框架内部实现依赖注入的重要工具。 - **BeanFactory**:是Spring框架中最基本的容器,负责实例化、定位和...
- **属性编辑器** (Property Editor): 用于转换不可直接转换的数据类型,如将字符串转换为日期等。 - **数据绑定** (Data Binding): 将 HTTP 请求中的参数与 Java 对象属性之间建立映射关系。 - **BeanWrapper**: -...
3. **异常转换**:Spring可以将Hibernate的异常转换为一致的、面向应用程序的异常,简化了错误处理。 ### 示例代码分析 给定的部分内容示例中,可以看到Spring配置文件`applicationContext.xml`的定义,以及如何...
通过对Spring框架核心概念的详细解读,如依赖注入的不同实现类型、Bean封装机制等,本书为开发者提供了坚实的基础,助力他们在实际项目中灵活运用Spring框架,构建高效、可维护的企业级应用程序。无论是新手还是有...
7.3.2. Spring里的通知类型 7.4. Spring里的advisor(Advisor) API 7.5. 使用ProxyFactoryBean创建AOP代理 7.5.1. 基础 7.5.2. JavaBean属性 7.5.3. 基于JDK和CGLIB的代理 7.5.4. 对接口进行代理 7.5.5. 对...
1.5.4 通用类型转换系统和属性格式化系统 1.5.5 数据访问层新增OXM功能 1.5.6 Web层的增强 1.5.7 其他 1.6 Spring对Java版本的要求 1.7 如何获取Spring 1.8 小结 第2章 快速入门 2.1 实例功能概述 2.1.1 比Hello ...
- **BeanWrapper**:BeanWrapper是Spring提供的一个包装器接口,用于操作Bean的属性,支持读写操作和类型转换等功能。 - **BeanFactory**:BeanFactory是Spring的核心接口之一,负责实例化、定位和配置应用程序中的...