JavaWeb BeanUtils信息类原理详解
这篇文章主要介绍了JavaWeb BeanUtils信息类原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
一.BeanInfo
1.BeanInfo是JavaBean类的信息类,一个javaBean的信息封装在对应beanInfo对象中
2.要获取到beanInfo,一般通过一个内省类Introspector的一个方法getBeanInfo(Class<T> beanClass),给个javaBean的类型就会返回对应的beanInfo对象,该方法的底层就是通过反射实现的
3.Bean常用的方法:
1.MethodDescriptor[] getMethodDescriptors():获取到javaBean对象的方法描述符对象的数组,
2.PropertyDescriptor[] getPropertyDescriptors():获取到javaBean对象的属性描述符对象的数组,有了PropertyDescriptor对象我们就可以获取到读写(get/set)的方法了,有了方法我们就可以通过反射来调用该方法了
3.流程如图:
二.BeanUtils
1.有两个jar包已经封装好了上面内省的机制:
commons-beanutils(里面依赖的是内省)和commons-logging两个jar包,所以上面流程图的操作不需要我们做了
2.beanUtils下有三个方法非常方便:
(1)void setProperty(bean, name, value):第一个参数是javaBean对象,二是属性名,三是属性值
(2)String getProperty(bean, name):第一个参数是javaBean对象,二是属性名
(3)void populate(bean, map):把一个map的属性封装到bean对象中,map的Key属性名必须跟bean中属性的名称一样,两者都相同
3.当对javaBean对象操作时,很多时候我们会用到BeanUtils
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
Java在运行时识别类型信息的方法详解
前言 在日常的学习工作当中,有一些知识是我们在读书的时候就能够习得:但有一些知识不是的,需要在实践的时候才能得到真知--这或许就是王阳明提倡的"知行合一". 在Java中,并不是所有的类型信息都能在编译阶段明确,有一些类型信息需要在运行时才能确定,这种机制被称为RTTI,英文全称为Run-Time Type Identification,即运行时类型识别,有没有一点"知行合一"的味道?运行时类型识别主要由Class类实现. 01 Class类 在Java中,我们常用
-
java反射之获取类的信息方法(推荐)
本文接上文"老生常谈反射之Class类的使用(必看篇)",以编写一个用来获取类的信息(成员函数.成员变量.构造函数)的工具类来讲解"反射之获取类的信息" 1.获取成员函数信息 /** * 获取成员函数信息 * @param obj */ public static void printClassMethodMessage(Object obj){ //获取类的信息 获取类的类类型 Class c = obj.getClass(); //获取类的名称 System.o
-
Java类库BeanUtils组件使用方法及实例详解
BeanUtils BeanUtils是Apache commens组件里面的成员,由Apache提供的一套开源api,用于简化对javaBean的操作,能够对基本类型自动转换. JavaBean BeanUtils组件是用于简化javaBean的操作,那么什么是javaBean呢?简单来说,javaBean实质就是java类,只不过是遵循了某种规范的java类. javaBean的特点: 必须具有一个无参的构造方法 属性必须私有化 私有化的属性必须通过public类型的方法来暴露,也就是说要出
-
java system类使用方法示例 获取系统信息
常用的方法: 复制代码 代码如下: long currentTimeMillis(); 获取当前时间的毫秒值 void exit();终止当前正在运行的 Java 虚拟机. 复制代码 代码如下: public static void Method(){ long l = System.currentTimeMillis(); System.out.println(l); System.exit(); } 描述系统属性信息:Properties System.getPropert
-
Java 创建动态类和查看方法列表信息的实例
Java 创建动态类和查看方法列表信息的实例 Sample code : import java.lang.reflect.Constructor; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import java.lang.reflect.Type; import java.util.ArrayList; import
-
Java工具类BeanUtils库介绍及实例详解
BeanUtils工具由Apache软件基金组织编写,提供给我们使用,主要解决的问题是:把对象的属性数据封装到对象中. 在整个J2EE的编程过程中,我们经常会从各种配置文件中读取相应的数据,需要明白的一点是从配置文件中读取到的数据都是String,但是很显然我们的应用程序中不仅仅有String一种数据类型,比如:基本数据类型(int.double.char.float等),还有自定义数据类型(引用数据类型), 那么我们必须面临的一个问题就是讲字符串类型转换为各种具体的数据类型,该怎么办呢? 有两
-
Java实现的获取和判断文件头信息工具类用法示例
本文实例讲述了Java实现的获取和判断文件头信息工具类用法.分享给大家供大家参考,具体如下: package test; import java.io.FileInputStream; import java.io.IOException; import java.util.HashMap; /** * 获取和判断文件头信息 * * @author Sud * */ public class GetTypeByHead { // 缓存文件头信息-文件头信息 public static final
-
Java 反射获取类详细信息的常用方法总结
类ReflectionDemo 复制代码 代码如下: package Reflection; @Deprecated public class ReflectionDemo { private String pri_field; public String pub_field; public ReflectionDemo(){} public ReflectionDemo(String name){} private ReflectionDemo(Stri
-
JavaWeb BeanUtils信息类原理详解
这篇文章主要介绍了JavaWeb BeanUtils信息类原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.BeanInfo 1.BeanInfo是JavaBean类的信息类,一个javaBean的信息封装在对应beanInfo对象中 2.要获取到beanInfo,一般通过一个内省类Introspector的一个方法getBeanInfo(Class<T> beanClass),给个javaBean的类型就会返回对应的beanInf
-
Java动态代理语法Proxy类原理详解
1.前言 写动态代理的代码涉及了一个非常重要的类 Proxy,通过Proxy的静态方法newProxyInstance才会动态创建代理对象. 2.newProxyInstance方法 public static Object newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h) 三个参数分别表示: loader表示类加载器, interfaces表示代码要用来代理的接口 , h表示一个
-
Spring IOC原理详解
最近,买了本Spring入门书:springInAction.大致浏览了下感觉还不错.就是入门了点.Manning的书还是不错的,我虽然不像哪些只看Manning书的人那样专注于Manning,但怀着崇敬的心情和激情通览了一遍.又一次接受了IOC.DI.AOP等Spring核心概念.先就IOC和DI谈一点我的看法. IOC(DI):其实这个Spring架构核心的概念没有这么复杂,更不像有些书上描述的那样晦涩.java程序员都知道:java程序中的每个业务逻辑至少需要两个或以上的对象来协作完成,通
-
spring事务Propagation及其实现原理详解
本文研究的主要是spring事务Propagation及其实现原理,具体介绍如下. 简介 spring目前已是java开发的一个事实标准,这得益于它的便利.功能齐全.容易上手等特性.在开发过程当中,操作DB是非常常见的操作,而涉及到db,就会涉及到事务.事务在平时的开发过程当中,就算没有注意到,程序正常执行不会有副作用,但如果出现了异常,而又没有处理好事务的话,可能就会出现意想不到的结果.spring在事务方面进行了各种操作的封装,特别是声明式事务的出现,让开发变得更加的舒心.spring对事务
-
C# 通过反射初探ORM框架的实现原理(详解)
背景: 以前学的Java进行开发,多用到Mybatis,Hiberante等ORM框架,最近需要上手一个C#的项目,由于不是特别难,也不想再去学习C#的ORM框架,所以就想着用反射简单的实现一下ORM框架的内容,简单的增删改查,没有用到多表之间的联系. 反射: Java和C#中的反射大体相同,主要是指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义.我的理解就是可以程序运行时动态的获取对象的属性和方法,并且可以进行与之相
-
Java中synchronized实现原理详解
记得刚刚开始学习Java的时候,一遇到多线程情况就是synchronized,相对于当时的我们来说synchronized是这么的神奇而又强大,那个时候我们赋予它一个名字"同步",也成为了我们解决多线程情况的百试不爽的良药.但是,随着我们学习的进行我们知道synchronized是一个重量级锁,相对于Lock,它会显得那么笨重,以至于我们认为它不是那么的高效而慢慢摒弃它. 诚然,随着Javs SE 1.6对synchronized进行的各种优化后,synchronized并不会显得那么
-
Python日志syslog使用原理详解
这篇文章主要介绍了Python日志syslog使用原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 syslog的官方说明在: https://docs.python.org/2/library/syslog.html#module-syslog 该模块的主要方式为: #!/usr/bin/python # -*- coding: utf-8 -*- import syslog syslog.openlog([ident[, logopt
-
Java正则表达式Pattern和Matcher原理详解
这篇文章主要介绍了Java正则表达式Pattern和Matcher原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 基本使用 Scanner中的使用正则表达式 //Scanner 支持的分组 Scanner cin=new Scanner("red a bbc").useDelimiter("\\s*a\\s*"); System.out.println(cin.next()); System.out.pri
-
SpringBoot内置tomcat启动原理详解
前言 不得不说SpringBoot的开发者是在为大众程序猿谋福利,把大家都惯成了懒汉,xml不配置了,连tomcat也懒的配置了,典型的一键启动系统,那么tomcat在springboot是怎么启动的呢? 内置tomcat 开发阶段对我们来说使用内置的tomcat是非常够用了,当然也可以使用jetty. <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-bo
-
Springboot整合实现邮件发送的原理详解
目录 开发前准备 基础知识 进阶知识 加入依赖 配置邮件 测试邮件发送 通常在实际项目中,也有其他很多地方会用到邮件发送,比如通过邮件注册账户/找回密码,通过邮件发送订阅信息等等.SpringBoot集成邮件服务非常简单,通过简单的学习即可快速掌握邮件业务类的核心逻辑和企业邮件的日常服务 开发前准备 首先注册发件邮箱并设置客户端授权码,这里以QQ 免费邮箱为例,其他的邮箱的配置也大同小异. 登录 QQ 邮箱,点击设置->账户,开启IMAP/SMTP服务,并生成授权码. 基础知识 电子邮件需要在邮
随机推荐
- dbcp 连接池不合理的锁导致连接耗尽解决方案
- jQuery实现回车键(Enter)切换文本框焦点的代码实例
- ASP.NET开发者使用jQuery应该了解的几件事情
- javascript 框架小结 个人工作经验
- PHP网页游戏学习之Xnova(ogame)源码解读(五)
- PHP图像识别技术原理与实现
- 解析mysql中:单表distinct、多表group by查询去除重复记录
- JavaScript Date对象详解
- 通过JavaScript或PHP检测Android设备的代码
- sqlserver 三种分页方式性能比较[图文]
- CI框架中redis缓存相关操作文件示例代码
- jQuery元素选择器用法实例
- jquery通过closest选择器修改上级元素的方法
- setTimeout()与setInterval()方法区别介绍
- Java棋类游戏实践之单机版五子棋
- Java中四种线程池的使用示例详解
- php实现的一段简单概率相关代码
- 利用HBuilder打包前端开发webapp为apk的方法
- 解析vue中的$mount
- vue-cli项目无法用本机IP访问的解决方法