`
109735215
  • 浏览: 33154 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

【JAVA菜鸟的扎实功底进行时】(一) ===JAVA反射机制,建立Spring Ioc的基础

 
阅读更多

前言:

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_ioc.docx

    Spring 框架是 Java Web 开发中广泛使用的轻量级框架,其核心特性是控制反转 (IOC) 和依赖注入 (DI)。控制反转是指将对象的创建权从应用程序代码转移到框架,即不再由程序主动创建对象,而是由框架负责创建和管理。...

    菜鸟 Spring 源码解读 推荐流程

    在本文中,我们将深入探讨Spring的源码,尤其是针对"菜鸟"级别的开发者如何逐步理解并掌握Spring的核心机制。 首先,源码解读对于任何开发者来说都是提升技术能力的重要途径。通过阅读源码,我们可以更直观地了解...

    Java学习资料汇集(书籍、文章、总结)

    5. 学习Spring和Spring Boot,重点掌握IOC、AOP和常用注解,结合W3C School或菜鸟教程进行辅助学习,动手实践尤为重要。 总之,学习Java是一个持续的过程,需要不断练习和探索。跟随上述资源,持之以恒,你将逐步...

    spring所需jar包

    Spring框架是Java开发中不可或缺的一部分,它为开发者提供了丰富的功能,包括依赖注入、面向切面编程、事务管理、数据访问和Web应用支持等。在Java应用程序中使用Spring,通常需要引入一系列的jar包来实现其核心功能...

    java超全面的面试总结

    Java作为世界上最受欢迎的编程语言之一,其面试题的深度和广度都相当广泛。这篇面试总结涵盖了Spring、MyBatis等关键框架的核心概念和技术,旨在帮助求职者充分准备技术面试。以下是一些重要的Java面试知识点: 1. ...

    使用gradle构建Spring源码工程需要的Spring-chlib-repack-3.2

    1. **spring-core-4.3.0.BUILD-SNAPSHOT.jar**:这是Spring框架的核心库,包含了Spring的基础组件,如IoC(Inversion of Control)容器,类型转换系统,事件传播,资源处理等。 2. **spring-cglib-repack-3.2.0.jar...

    开发J2EE程序需要的JAR包包括(ant,hibernate,structs,spring)

    在开发J2EE(Java 2 Platform, Enterprise Edition)应用程序时,使用正确的库和框架是至关重要的。这里提到的四个关键组件——Ant、Hibernate、Struts和Spring,都是Java世界中广泛使用的工具和框架,它们各自服务...

    2022年javaWeb面试题含答案.doc

    3. Hibernate 使用 Java 反射机制而不是字节码增强程序来实现透明性。 4. Hibernate 的性能好,映射的灵活性比较杰出。 Hibernate 关键类和重要措施 Hibernate 的关键类包括 Configuration、SessionFactory 和 ...

    基于SpringBoot简洁优雅的个人博客系统.zip

    掌握Java基础语法、面向对象编程、异常处理、集合框架、IO流、多线程等是进行SpringBoot开发的基础。 【Spring生态体系】 Spring框架是Java企业级应用的事实标准,SpringBoot是其简化版。Spring提供了IOC...

    ssh框架最全jar包

    SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常用的一种集成框架。这个框架集合了三个强大的开源组件,旨在提供高效、灵活且可扩展的后端解决方案。下面将详细介绍这三个框架的核心功能及其...

    基于SSM的商城系统.zip

    【标题】"基于SSM的商城系统"是一个典型的Java Web项目,使用了Spring、Spring MVC和MyBatis三个框架的组合,简称SSM框架。这是一个常见的企业级应用开发技术栈,广泛应用于各种业务系统的构建,尤其在电子商务领域...

    ssm框架整合配置文件

    SSM框架,全称为Spring、SpringMVC和MyBatis的整合框架,是Java Web开发中常用的一个轻量级框架组合。它将Spring的核心容器、Spring的MVC模块以及MyBatis持久层框架进行了集成,提供了高效且灵活的web应用程序开发...

    SSH整合开发

    SSH整合开发是Java Web开发中的一个重要概念,它指的是Spring、Struts2和Hibernate这三大开源框架的集成。这些框架各自负责应用程序的不同层面,Spring管理应用的业务逻辑和依赖注入,Struts2处理用户界面和动作控制...

    基于SSM+maven的学生选课管理系统的设计与实现

    首先,SSM框架是Java Web开发中常用的技术栈,它将Spring的IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)功能、SpringMVC的MVC设计模式以及MyBatis的持久层操作完美...

    J2EE软件工程师全部培训课程总结

    - **概述**:Spring是一个轻量级的Java开发框架。 - **IOC (控制反转)**:将对象创建和依赖关系管理的责任交给框架。 - **AOP (面向方面的程序设计)**:将横切关注点模块化。 - **Spring中的DataAccess**:包括JDBC...

    SSM上传文件并重命名demo

    SSM(Spring、SpringMVC、MyBatis)是一个经典的Java Web开发框架,它整合了Spring的核心 IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)功能,SpringMVC作为MVC(Model...

    互联网大厂面试题大全.pdf

    - Spring框架是企业级应用的基础,面试中可能会深入探讨IoC容器、AOP、事务管理等概念。 - SpringMVC作为Spring的Web MVC框架,处理HTTP请求,涉及控制器、模型、视图和视图解析器等组件。 - MyBatis是一个轻量级...

    基于ssm框架整合的,用户查询、删除、添加、修改功能的网页

    SSM框架是Java web开发中常用的三大框架Spring、Spring MVC和MyBatis的组合,它为企业级应用提供了灵活且强大的解决方案。在这个项目中,我们主要关注如何利用SSM框架实现用户管理的相关功能,包括查询、删除、添加...

Global site tag (gtag.js) - Google Analytics