Spring小结

1. 控制反转IOC和依赖注入

Spring用IOC容器来替我们管理需要用的类,当在程序中需要用到这些类时通过注解,Spring就会替我们将相应的类实例注入到相应的位置。IOC容器也叫做BeanFactory,而

那些一个个被Spring管理类称为bean。在程序中,可以通过配置文件和注解两种方式将类交由Spring管理。

配置xml文件,Spring会加载这些xml文件,然后用xml文件解析器来解析相应的bean的类以及属性,构造方法等。然后用反射的模式生成相应的类放入到BeanFactory中。

注解模式,通过Spring中的注解,如@Autowired,@Compont,将类声明为spring管理的类,并且将这些类所属的包配置到xml文件中,spring加载xml文件时,扫描这些类,发

现存在注解的类,通过反射生成类实例放入到BeanFactory中。

2.代理

spring第二大作用就是aop,来自于代理模式,代理模式有三个角色分别是通用接口、代理、真实对象。代理、真实对象实现的是同一接口,将真实对象作为代理的一个属性,向客户端公开的是代理,当客户端调用代理的方法时,代理找到真实对象,调用真实对象方法,在调用之前之后提供相关的服务,如事务、安全、日志。其名词分别是代理、真实对象、装备、关切点、连接点。

3.动态代理

不用写代理类,虚拟机根据真实对象实现的接口产生一个类,通过类实例化一个动态代理,在实例化动态代理时将真实对象及装备注入到动态代理中,向客户端公开的是动态代理,当客户端调用动态代理方法时,动态代理根据类的反射得到真实对象的Method,调用装备的invoke方法,将动态代理、Method、方法参数传与装备的invoke方法,invoke方法在唤起method方法前或后做一些处理。

4. 反射

通过类说明可以得到类的父类、实现的接口、内部类、构造函数、方法、属性并可以根据构造器实例化一个对象,唤起一个方法,取属性值,改属性值。

如何得到一个类说明?

Class cls=类.class;

Class cls=对象.getClass();

Class.forName(“类路径”);

如何得到一个方法并唤起它?

Class cls=类.class;

Constructor cons=cls.getConstructor(new Class[]{String.class});

Object obj=cons.newInstance(new Object[]{“aaa”});

Method method=cls.getMethod(“方法名”,new Class[]{String.class,Integer.class});

method.invoke(obj,new Object[]{“aa”,new Integer(1)});



原文地址:https://www.cnblogs.com/marcotan/p/4256935.html