一.Spring的核心是控制反转(IOC)和面向切面(AOP),是一站式轻量级框架
IOC:即将Bean对象的创建,依赖关系,交给Spring容器来管理,用来解耦,------工厂模式
实现控制反转的一种方式:依赖注入
1.set方法注入
2.构造函数注入
AOP:即提供切面编程,j将重复性代码抽取,在不改变源码的基础上对方法进行加强,可以对程序进行拦截------动态代理
好处:维护方便,减少重复性代码, 执行效率提高(字节码代理)
动态代理分类:
基于接口的动态代理
涉及的类Proxy.是JDK官方提供的
Proxy.newProxyInstance(ClassLoader,interfaces,new InvocationHandler())
要求:被代理的对象至少实现一个接口
基于子类的动态代理
涉及的类: Enhancer是CGLIB提供的,第三方
Enhancer.create(Class,new MethodInterceptor(){});
要求:被代理的类不能是final修饰的
二.ApplicationContext是Spring提供的一个接口,是Spring的容器对象,我们使用该对象从Spring容器中
获取bean的对象,它有两个实现类
1.ClassPathXmlApplicationContext:它从类的根路径下加载配置文件,其他路径的不能加载
2.FileSystemApplicationContext:它可以加载磁盘中任意位置的文件
BanFactory和ApplicationContext的区别:
BeanFactory:它使用延迟加载思想来创建Bean对象
ApplicationContext:它使用立即加载的思想来加载Bean对象
三.bean的生命周期:
1.单例:
出生:应用加载时,对象创建
活着:只要容器存在,一直活着
死亡:容器销毁,对象消亡
2.多例:
出生:应用加载时,对象创建
活着:只要对象一直被使用,一直活着
死亡:当对象长时间没有使用时,由JVM的垃圾回收机制回收