注解-反射-XML配置原理

java刚开始原本是直接在方法中创建对象执行程序等,部分代码重复率高,后来就发展成方法封装调用,再后来出现的像spring框架等,引入了XML配置,使得程序更加简洁,方便等,其中XML配置也是基于java反射机制,再后来为了去除XML配置就采用了注解的方式,但其也是基于java反射机制。

反射机制

反射机制说白了就是用Class对象在程序运行时通过字符串动态地去实现创建对象,判断方法,对象类型等。其以下功能都来自己于Class对象实现。

Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。这种动态获取程序信息以及动态调用对象的功能称为Java语言的反射机制。反射被视为动态语言的关键。

Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。

反射技术大量用于Java设计模式和框架技术,最常见的设计模式就是工厂模式和单例模式。

单例模式(Singleton):这个模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。在很多操作中,比如建立目录 数据库连接都需要这样的单线程操作。这样做就是为了节省内存空间,保证我们所访问到的都是同一个对象。

工厂模式(Factory):工厂模式利用Java反射机制和Java多态的特性可以让我们的程序更加具有灵活性。用工厂模式进行大型项目的开发,可以很好的进行项目并行开发。  

注解

Annotation接口中有这么一句话 "The common interface extended by all annotation types. "。也就是所有的注解都继承于 java.lang.annotation.Annotation 接口。

@interface不是接口是注解类,在jdk1.5之后加入的功能,使用@interface自定义注解时,由编译程序自动编译继承了java.lang.annotation.Annotation接口,由编译程序自动完成其他细节,我们通过反编译可以看到

 其中,@Retention(RetentionPolicy.RUNTIME),括号内的值决定使用@Test注解的保留策略。

具体详看:Java自定义注解解析_51CTO博客_java 自定义注解

注解配置原理

继承Annotation 接口后,也还是属于接口,注解在Java内部其实就是一个接口,对于每个注解都会生成一个动态代理类,准确的说只有通过反射获取到注解时,Java才会生成这个动态代理类,对于每个使用的地方,会使用到该动态代理类。

具体详看:

七、动态代理实现分析_动态代理生成对象_老去的90后的博客-CSDN博客

https://www.cnblogs.com/ajianbeyourself/p/14560581.html

xml配置实现创建对象原理

spring通过ioc(控制反转)的方式读取配置文件中的信息然后通过反射实现对象的创建,其实就是通过获取xml文件字符串,使用反射机制,用Class对象创建对象。

具体详看:读取xml文件并通过反射创建一个对象_xml反射创建对象_qq_45411328的博客-CSDN博客

其中文章参考以下链接:

二、Java注解&反射和动态代理_java注解与动态代理_耀耀zz的博客-CSDN博客

用最直接的大白话来聊一聊Java中的反射机制 - 哔哩哔哩

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值