前言:
IoC 是Spring 容器的内核,AOP,事物式声明等功能都是建立在此基础上开花结果。那么建立IoC的基础就是基于JAVA的反射机制。
(一)JAVA的另一种引用对象的方法。
大家知道,当我要引用一个类时候,通常通过Class构造函数进行实例化。例如:Car car=new Car(); 的方式。其实在JAVA语言中,JAVA 语言允许通过程序化的方式间接对Class进行操作,Class文件由类的装载器装载后,在JVM中形成一份描述Class结构的元信息对象,通过元信息对对象可以获知Class的结构信息,例如:构造函数,属性,方法。
(二)JAVA 反射机制示例
实体: Car
package com.reflect;
public class Car {
private String brand;
private String color;
private int maxSpeed;
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public int getMaxSpeed() {
return maxSpeed;
}
public void setMaxSpeed(int maxSpeed) {
this.maxSpeed = maxSpeed;
}
public Car() {
}
public void introduce() {
System.out.println(brand+color+maxSpeed);
}
}
Car反射机制代码:
package com.reflect;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
public class TestReflect {
public static void main(String[] args) throws Throwable {
Car car= initByDefaultConst();
car.introduce();
}
public static Car initByDefaultConst()throws Throwable {
//获取当前线程的上下文 Classloader
ClassLoader loader=Thread.currentThread().getContextClassLoader();
//通过类的装载器获取Car类的对象
@SuppressWarnings("rawtypes")
Class clazz=loader.loadClass("com.reflect.Car");
//获取构造方法
@SuppressWarnings({ "rawtypes", "unchecked" })
Constructor cons=clazz.getDeclaredConstructor((Class[])null);
Car car=(Car)cons.newInstance();
@SuppressWarnings("unchecked")
Method setBrand=clazz.getMethod("setBrand", String.class);
setBrand.invoke(car, "红旗CA72");
@SuppressWarnings("unchecked")
Method setColor=clazz.getMethod("setColor", String.class);
setColor.invoke(car, "黑色");
@SuppressWarnings("unchecked")
Method setMaxSpeed=clazz.getMethod("setMaxSpeed", int.class);
setMaxSpeed.invoke(car, 200);
return car;
}
}
输出结果:
Java 类装载器工作机制:
类装载器:就是寻找字节码文件并构建在JVM内部表示对象的组件。
类装载步骤:
1 装载:查找和导入Class文件。
2.连接:a 校验 b准备 c解析
3 初始化: 对静态变量 ,静态代码进行初始化。
分享到:
相关推荐
Spring 框架是 Java Web 开发中广泛使用的轻量级框架,其核心特性是控制反转 (IOC) 和依赖注入 (DI)。控制反转是指将对象的创建权从应用程序代码转移到框架,即不再由程序主动创建对象,而是由框架负责创建和管理。...
在本文中,我们将深入探讨Spring的源码,尤其是针对"菜鸟"级别的开发者如何逐步理解并掌握Spring的核心机制。 首先,源码解读对于任何开发者来说都是提升技术能力的重要途径。通过阅读源码,我们可以更直观地了解...
5. 学习Spring和Spring Boot,重点掌握IOC、AOP和常用注解,结合W3C School或菜鸟教程进行辅助学习,动手实践尤为重要。 总之,学习Java是一个持续的过程,需要不断练习和探索。跟随上述资源,持之以恒,你将逐步...
Spring框架是Java开发中不可或缺的一部分,它为开发者提供了丰富的功能,包括依赖注入、面向切面编程、事务管理、数据访问和Web应用支持等。在Java应用程序中使用Spring,通常需要引入一系列的jar包来实现其核心功能...
Java作为世界上最受欢迎的编程语言之一,其面试题的深度和广度都相当广泛。这篇面试总结涵盖了Spring、MyBatis等关键框架的核心概念和技术,旨在帮助求职者充分准备技术面试。以下是一些重要的Java面试知识点: 1. ...
1. **spring-core-4.3.0.BUILD-SNAPSHOT.jar**:这是Spring框架的核心库,包含了Spring的基础组件,如IoC(Inversion of Control)容器,类型转换系统,事件传播,资源处理等。 2. **spring-cglib-repack-3.2.0.jar...
在开发J2EE(Java 2 Platform, Enterprise Edition)应用程序时,使用正确的库和框架是至关重要的。这里提到的四个关键组件——Ant、Hibernate、Struts和Spring,都是Java世界中广泛使用的工具和框架,它们各自服务...
3. Hibernate 使用 Java 反射机制而不是字节码增强程序来实现透明性。 4. Hibernate 的性能好,映射的灵活性比较杰出。 Hibernate 关键类和重要措施 Hibernate 的关键类包括 Configuration、SessionFactory 和 ...
掌握Java基础语法、面向对象编程、异常处理、集合框架、IO流、多线程等是进行SpringBoot开发的基础。 【Spring生态体系】 Spring框架是Java企业级应用的事实标准,SpringBoot是其简化版。Spring提供了IOC...
SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常用的一种集成框架。这个框架集合了三个强大的开源组件,旨在提供高效、灵活且可扩展的后端解决方案。下面将详细介绍这三个框架的核心功能及其...
【标题】"基于SSM的商城系统"是一个典型的Java Web项目,使用了Spring、Spring MVC和MyBatis三个框架的组合,简称SSM框架。这是一个常见的企业级应用开发技术栈,广泛应用于各种业务系统的构建,尤其在电子商务领域...
SSM框架,全称为Spring、SpringMVC和MyBatis的整合框架,是Java Web开发中常用的一个轻量级框架组合。它将Spring的核心容器、Spring的MVC模块以及MyBatis持久层框架进行了集成,提供了高效且灵活的web应用程序开发...
SSH整合开发是Java Web开发中的一个重要概念,它指的是Spring、Struts2和Hibernate这三大开源框架的集成。这些框架各自负责应用程序的不同层面,Spring管理应用的业务逻辑和依赖注入,Struts2处理用户界面和动作控制...
首先,SSM框架是Java Web开发中常用的技术栈,它将Spring的IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)功能、SpringMVC的MVC设计模式以及MyBatis的持久层操作完美...
- **概述**:Spring是一个轻量级的Java开发框架。 - **IOC (控制反转)**:将对象创建和依赖关系管理的责任交给框架。 - **AOP (面向方面的程序设计)**:将横切关注点模块化。 - **Spring中的DataAccess**:包括JDBC...
SSM(Spring、SpringMVC、MyBatis)是一个经典的Java Web开发框架,它整合了Spring的核心 IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)功能,SpringMVC作为MVC(Model...
- Spring框架是企业级应用的基础,面试中可能会深入探讨IoC容器、AOP、事务管理等概念。 - SpringMVC作为Spring的Web MVC框架,处理HTTP请求,涉及控制器、模型、视图和视图解析器等组件。 - MyBatis是一个轻量级...
SSM框架是Java web开发中常用的三大框架Spring、Spring MVC和MyBatis的组合,它为企业级应用提供了灵活且强大的解决方案。在这个项目中,我们主要关注如何利用SSM框架实现用户管理的相关功能,包括查询、删除、添加...