spring高级框架
优点:
1.轻量级(给jar包,给环境就能够运行)
2.Spring的ioc与aop两大内核,可以融合各大框架
3.分层框架mvc(controller service mapper)
4.提供业务层的事务管理
ioc:Inversion Of Control(ioc控制反转)
ioc描述的事情:java开发领域对象的创建、管理问题。
传统的方式:类A依赖于类B,需要在类A中new一个B对象。
ioc思想:不去new对象,让ioc容器帮我们实例化对象并管理它,需要使用对象的时候去找ioc容器拿。
ioc与di:两者描述的其实是一件事情在两个角度的叫法,ioc是站在对象的角度,对象实例化及管理权限交给了ioc容器;di是站在ioc容器的角度,容器把对象依赖的其他对象注入到该对象中。
aop:Aspect Oriented Programming(面向切面编程)
aop:在不改变原有业务逻辑的情况下,增强横切逻辑代码,从根本上解耦,避免横切代码重复。
主要应用场景:事务控制、权限校验、日志等。
切:指的是横切逻辑,原有业务逻辑不能动,所以叫面向横切逻辑编程。
面:指的是横切逻辑代码往往要影响的是多个方法,每个方法都如同一个点,多点构成面,有个面的概念在里面。
Spring框架Ioc的实现
ioc实现的三种方式
1.纯xml方式(bean信息定义全部配置再xml中)
2.xml+注解(部分bean使用xml定义,部分bean使用注解定义,自己写的类用注解)
3.纯注解(所有的bean都是用注解定义)
Spring的ioc实例化bean的三种方式:
1.使用无参构造器(以及反射技术) 常用
2.静态方法
3.实例化对象
Bean作用范围
singleton 单例,程序中只有一个对象,创建容器的时候,对象就被创建了;
只要容器在对象就一直活着,当容器销毁时,对象才被销毁,单例模式的bean对象生命周期与容器相同。
prototype 原型,每次请求获取一个新的对象(getBean)当对象被使用时,创建新的对象实例,只要对象在使用中就一直活着,当对象长期不使用的时候,
就会被java的GC回收机制回收,多例模式下spring框架只负责创建bean对象不负责销毁。
FactoryBean 与BeanFactory的区别
spring中bean有两种,一种是普通Bean还有一种是工厂Bean
FactoryBean 是可以生成某一类型的Bean实例,也就是说我们可以借助于它自定义bean的创建方式
BeanFactory 是高级接口
Bean的生命周期
第一步:实例化Bean
-->第二步:设置熟悉值
-->第三步:调用BeanNameAware的setBeanNaem()方法
-->第四步:调用BeanFactoryAware的setBeanFactory()方法
-->第五步:调用ApplicationContextAware的setApplicationContext()方法
-->第六步:调用BeanPostProcessor的预初始化方法
-->第七步:调用InitializlingBean的afterPropertiesSet()方法
-->第八步:调用定制的初始化方法init-method()方法
-->第九步:调用BeanPostProcessor的后初始化方法
-->第十步:假如是单例模式就放到缓存池中,假如是多例就将Bean交给调用者。
三级缓存用来解决循环依赖问题
