黑马程序员_java高新技术总结【3】(内省、注解、代理)
来源:互联网 发布:马士兵java视频教程27 编辑:程序博客网 时间:2024/05/29 03:04
--------------android培训、java培训、期待与您交流! --------------
内省
(1)BeanUtils等工具包都是由APache的,为了便于开发。
(2)BeanUtils可以将8种基本数据类型进行自动的转换,因此对于非基本数据类型,就需要注册转换器Converter,这就需要ConverUtils包。
(3)好处:
提供的set或get方法中,传入的是字符串,返回的还是字符串,因为在浏览器中,用户输入到文本框的都是以字符串的形式发送至服务器上的,所以操作的都是字符串。也就是说这个工具包的内部有自动将整数转换为字符串的操作。
支持属性的级联操作,即支持属性链。如可以设置:人的脑袋上的眼睛的眼珠的颜色。这种级联属性的属性连如果自己用反射,那就很困难了,通过这个工具包就可以轻松调用。
4、可以和Map集合进行相互转换:可将属性信息通过键值对的形式作为Map集合存储(通过static java.util.Mapdescribe(java.lang.Object bean)的方法)。也可以将Map集合转换为JavaBean中的属性信息(通过static void populate(java.lang.Objectbean, java.util.Map properties)的方法)。
注:要正常使用BeanUtils工具,还要将Apache公司的logging(日志)的jar包也添加进Build Path。
Eclipse小知识:
在工程中导入工具jar包。
两种方式:
1,右键项目--选择Properties---Java Build Path--选择Liberiers标签。AddExternal Jars--选择要导入的jar包。即可。
这样做有个问题就是如果jar路径发生变化。项目就不能使用到这个jar包。
2,在项目中建立一个lib目录,专门用于存放项目所使用到的jar工具包。将要使用到jar包复制粘贴进来,并在jar上点右键--选择Builder Path---Add to BiuldPath,即可。这时jar包中的对象,就可以使用了。
这样做的好处:项目移动,jar随项目移动。
注解
代理和动态代理:
动态代理: JVM可以在运行期动态生成类的字节码,这种动态生成往往被用作代理类,即为动态代理.jvm生成的动态类必须实现一个或多个接口,所以,jvm生成的动态类只能用作具有相同接口的目标类的代理。
其实动态代理机制最核心的就是InvocationHandler(调用处理器)这个接口InvocationHandler 是代理实例的调用处理程序 实现的接口。
代理对象:代理类所生成的对象。
目标对象:代理类所代理的那个类生成的对象。
类加载器:ClassLoader
类加载器负责把类加载到Java虚拟机(JVM)中。指定类的名称,类加载器就会定位这个类的定义,每一个Java类必须由类加载器加载。启动JVM的时候,可以使用三个类加载器:引导(bootstrap)类加载器(第一个加载器它不是java类)、扩展(extensions)类加载器、应用程序(application)类加载器。
得到类加载名称:类.class.getClassLoader().getClass().getName();
当处理类加载器时,父委托模式是一个需要理解的关键概念。它规定:类加载器在加载自己的类之前,可以委托先加载父类。
父类加载器可以是客户化的类加载器或者引导类加载器。但是有一点很重要,类加载器只能委托自己的父类加载器,而不能是子类加载器(只能向上不能向下)。
classloader 加载类用的是全盘负责委托机制。
全盘负责:即是当一个classloader加载一个Class的时候,这个Class所依赖的和引用的其它Class通常也由这个classloader负责载入。
委托机制:先让parent(父)类加载器寻找,只有在parent找不到的时候才从自己的类路径中去寻找。
类加载还采用了cache机制:如果cache中保存了这个Class就直接返回它,如果没有才从文件中读取和转换成Class,并存入cache,这就是为什么修改了Class但是必须重新启动JVM才能生效,并且类只加载一次的原因。
自定义类加载器:
1、 自定义的类加载器必须继承ClassLoader。2、 ClassLoader中有loadClass()和findclass()两个方法,loadClass()方法实现了委托机制,findClass()方法辅负责自己加载类,因此我们只需重写findClass()方法
3、 defineClass()方法。通过findClass()得到class文件中的二进制数据后,用findClass()方法将其转换为字节码。
- 黑马程序员_java高新技术总结【3】(内省、注解、代理)
- 黑马程序员_Java高新技术(内省、注解、泛型、类加载器、代理)
- 黑马程序员_Java高新技术——内省,注解
- 黑马程序员-高新技术(内省,注解)
- 黑马程序员 高新技术---内省、注解
- 黑马程序员_Java高新技术之 内省 JavaBean
- 黑马程序员_Java高新技术_内省&JavaBean
- 黑马程序员_java学习日记_Java高新技术_内省和注解
- 黑马程序员 java_高新技术(三)_内省 JavaBean 注解
- 黑马程序员----java高新技术--内省,注解
- 黑马程序员--高新技术(内省)
- 黑马程序员_java内省注解泛型
- 黑马程序员_java内省注解泛型
- 黑马程序员_Java高新技术_注解
- 黑马程序员_java高新技术之注解
- 黑马程序员_Java 高新技术(3)
- 黑马程序员_Java高新技术(3)动态代理和AOP技术
- 黑马程序员_java高新技术之动态代理
- 视频服务器:监控中的作用与选购要点
- java设计模式---单例模式
- Eclipse is running in a JRE, but a JDK is require错误解析
- Vs2012安装问题
- 理工大学ACM平台题答案关于C语言 1582 排序
- 黑马程序员_java高新技术总结【3】(内省、注解、代理)
- (void) (&_x == &_y)
- pocketsphinx语音识别库使用及移植
- 学习鸟哥私房菜 记录关键词-3 2013-12-25
- java Collections.sort()对list的排序 (java群: 66728073)
- 虚拟机 增加磁盘空间
- Starling Juggler
- 黑马程序员_java面试题总结【1】(交通灯管理系统)
- HashMap 多线程处理之 Fail-Fast机制