一、 IoC(Inversion of control): 控制反转
概念:控制权由对象本身转向容器;由容器根据配置文件去创建实例并创建各个实例之间的依赖关系
核心:bean工厂;在Spring中,bean工厂创建的各个实例称作bean
概念:控制权由对象本身转向容器;由容器根据配置文件去创建实例并创建各个实例之间的依赖关系
核心:bean工厂;在Spring中,bean工厂创建的各个实例称作bean
内部最核心的就是IOC
动态注入,让一个对象的创建不用new了,可以自动的生产,这其实就是利用java里的反射
反射其实就是在运行时动态的去创建、调用对象,Spring就是在运行时,跟xml Spring的配置 文件来动态的创建对象,和调用对象里的方法的 。
动态注入,让一个对象的创建不用new了,可以自动的生产,这其实就是利用java里的反射
反射其实就是在运行时动态的去创建、调用对象,Spring就是在运行时,跟xml Spring的配置 文件来动态的创建对象,和调用对象里的方法的 。
二、AOP(Aspect-Oriented Programming): 面向方面编程
1、 代理的两种方式:
静态代理:
针对每个具体类分别编写代理类;
针对一个接口编写一个代理类;
动态代理:
针对一个方面编写一个InvocationHandler,然后借用JDK反射包中的Proxy类为各种接口动态生成相应的代理类
2、 AOP的主要原理:动态代理
1、 代理的两种方式:
静态代理:
针对每个具体类分别编写代理类;
针对一个接口编写一个代理类;
动态代理:
针对一个方面编写一个InvocationHandler,然后借用JDK反射包中的Proxy类为各种接口动态生成相应的代理类
2、 AOP的主要原理:动态代理
另一个核心就是AOP
这个就是面向切面编程,可以为某一类对象 进行监督和控制(也就是在调用这类对象的具体方法的前后去调用你指定的 模块)从而达到对一个模块扩充的功能。这些都是通过配置类达到的。
Spring目的 :就是让对象与对象(模块与模块)之间的关系没有通过代码来关联,都是通过配置类说明
管理的(Spring根据这些配置 内部通过反射去动态的组装对象)
要记住 :Spring是一个容器,凡是在容器里的对象才会有Spring所提供的这些服务和功能。
Spring里用的最经典的一个设计模式就是:模板方法模式。 Spring里的配置是很多的,很难都记住,但是Spring里的精华也无非就是以上的两点,把以上两点跟理解了
也就基本上掌握了Spring.
Spring目的 :就是让对象与对象(模块与模块)之间的关系没有通过代码来关联,都是通过配置类说明
管理的(Spring根据这些配置 内部通过反射去动态的组装对象)
要记住 :Spring是一个容器,凡是在容器里的对象才会有Spring所提供的这些服务和功能。
Spring里用的最经典的一个设计模式就是:模板方法模式。 Spring里的配置是很多的,很难都记住,但是Spring里的精华也无非就是以上的两点,把以上两点跟理解了
也就基本上掌握了Spring.
三、
spring
原理
spring
的最大作用
ioc/di,
将类与类的依赖关系写在配置文件中,
程序在运行时根据配置文件动态加载依赖的类,降低的类与类之间
的藕合度。它的原理是在
applicationContext.xml
加入
bean
标记
,
在
bean
标记中通过
class
属性说明具体类名、通过
property
标签说明
该类的属性名、通过
constructor-args
说明构造子的参数。其一切都是
返射,当通过
applicationContext.getBean("id
名称
")
得到一个类实例时,
就是以
bean
标签的类名、属性名、构造子的参数为准,通过反射实例对象,
唤起对象的
set
方法设置属性值、通过构造子的
newInstance
实例化得到对象。
正因为
spring
一切都是反射,反射比直接调用的处理速度慢,所以这也是
spring
的一个问题。
spring
第二大作用就是
aop
,其机理来自于代理模式,代理模式
有三个角色分别是通用接口、代理、真实对象
代理、真实对象实现的是同一接口,将真实对象作为
代理的一个属性,向客户端公开的是代理,当客户端
调用代理的方法时,代理找到真实对象,调用真实对象
方法,在调用之前之后提供相关的服务,如事务、安全、
日志。其名词分别是代理、真实对象、装备、关切点、连接点。
四、
动态代理
:
不用写代理类,虚拟机根据真实对象实现的接口产生一个类,通过
类实例化一个动态代理,在实例化动态代理时将真实对象
及装备注入到动态代理中,向客户端公开的是动态代理,
当客户端调用动态代理方法时,动态代理根据类的返射得
到真实对象的
Method,
调用装备的
invoke
方法,将动态代理、
Method
、方法参数传与装备的
invoke
方法,
invoke
方法在唤
起
method
方法前或后做一些处理。
1
、产生动态代理的类
:
java.lang.refect.Proxy
2
、装备必须实现
InvocationHandler
接口实现
invoke
方法
五、反射:
什么是类的返射
?
通过类说明可以得到类的父类、实现的接口、内部类、构造函数、方法、属性
并可以根据构造器实例化一个对象,唤起一个方法,取属性值,改属性值。
如何得到一个类说明
?
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)});
六、
spring
的三种注入方式
s
etter
interface
constructor
七、
spring
的核心接口及核类配置文件
FactoryBean:
工厂
bean
主要实现
ioc/di
ApplicationContext ac=new FileXmlApplicationContext("applicationContext.xml");
Object obj=ac.getBean("id
值
");
applicationContext.xml
本文深入解析Spring框架的核心概念,包括IoC控制反转与AOP面向切面编程的基本原理及其应用场景。探讨Spring如何通过配置文件实现类间的依赖管理和动态代理机制。
900

被折叠的 条评论
为什么被折叠?



