spring ioc

spring ioc是spring的核心之一,也是spring体系的基础,那么spring ioc所依赖的底层技术是什么的?反射,以前我们开发程序的时候对象之间的相互调用需要用new来实现,现在所有的bean都是通过spring容器来管理。这样做有什么好处呢?解耦!以前程序直接的调用用new直接给写死了,现在我们可以通过注入不同的接口实现类来完成对象直接的调用。

 

首先来聊聊Java的反射机制

1、反射机制的作用:

  反编译:.class-->.java

  通过反射机制访问java对象的属性,方法,构造方法等;

2、Java反射机制用途:

  在运行时判断任意一个对象所属的类

  在运行时构造任意一个类的对象

  在运行时判断任意一个类所具有的成员变量和方法

  在运行时调用任意一个对象的方法

3、sun为我们提供了那些反射机制中的类:

复制代码

  java.lang.Class;                
  java.lang.reflect.Constructor;           
  java.lang.reflect.Field;        
  java.lang.reflect.Method;
  java.lang.reflect.Modifier;

复制代码

4、反射实现的方式

复制代码

Class c=Class.forName("className");
注明:className必须为全名,也就是得包含包名,比如,cn.xx.UserInfo;

Object obj=c.newInstance();
//创建对象的实例 

Constructor getConstructor(Class[] params)
//根据指定参数获得public构造器 

Constructor[] getConstructors()
//获得public的所有构造器 

Constructor getDeclaredConstructor(Class[] params)
//根据指定参数获得public和非public的构造器 

Constructor[] getDeclaredConstructors()
//获得public的所有构造器 

ewInstance();
//创建对象的实例 

获得类方法的方法
Method getMethod(String name, Class[] params),
根据方法名,参数类型获得方法 

Method[] getMethods()
//获得所有的public方法 

Method getDeclaredMethod(String name, Class[] params)
//根据方法名和参数类型,获得public和非public的方法 

Method[] getDeclaredMethods()
//获得所以的public和非public方法

获得类中属性的方法
Field getField(String name)
//根据变量名得到相应的public变量 

Field[] getFields()
//获得类中所以public的方法 

Field getDeclaredField(String name)
//根据方法名获得public和非public变量 

Field[] getDeclaredFields()
//获得类中所有的public和非public方法

复制代码

 

总结一句,以前写的代码,类的熟悉、方法什么东西的都固定了,如果使用反射我们就可以在运行的时候动态的去修改、增删对象的熟悉、方法等等。

 

spring IOC是如果使用反射来完成对象的注入呢?

1、读取配置文件,或者扫描注解属性

2、根据配置文件,通过反射实例化对象

3、给对象注入依赖的属性

4、放到类似hashMap结构中,供系统调用

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值