1.为什么用spring?
1)spring属于低侵入式设计,代码的污染极低;
2)spring的DI机制将对象之间的依赖关系交由框架处理,减低组件的耦合性;
3)Spring提供了AOP技术,支持将一些通用任务,如安全、事务、日志、权限等进行集中式管理,从而提供更好的复用。
4)spring对于主流的应用框架提供了集成支持。
2.spring ioc?
IOC,控制反转,指将对象的控制权转移给Spring框架,由spring 来负责控制对象的生命周期(如创建,销毁)和对象的依赖关系。IOC的实现原理是工厂模式加反射机制。
3.spring aop?
面向切面编程,aop是oop(面向对象编程)的延续,是函数式编程的一种衍生泛型.AOP实现的关键在于 代理模式,AOP代理主要分为静态代理(事先知道代理什么)和动态代理(运行时才知道)。静态代理的代表为AspectJ;动态代理则以Spring AOP为代表。
4.spring 通知有哪些类型?
before 前置通知
after 后置通知
around 环绕通知
afterReturning 返回后通知
after Throwing advice 抛出异常后通知
5.beanFactory ApplicationContext FactoryBean?
spring 主要提供了两种 IOC 容器,一种是 BeanFactory,还有一种是 ApplicationContext
BeanFactory 只提供了最基本的实例化对象和拿对象的功能,而 ApplicationContext 是继承了 BeanFactory 所派生出来的产物,是其子类,它的作用更加的强大,比如支持注解注入、国际化等功能
BeanFactory 是 IOC 容器,是用来承载对象的
FactoryBean 是一个接口,为 Bean 提供了更加灵活的方式,通过代理一个Bean对象,对方法前后做一些操作。
6.spring bean的生命周期
实例化 填充属性 初始化 销毁
7. @Autowired @Resource?
@Autowired,由spring提供,默认按照类型装配,如果需要按照名称匹配需要和@Qualifier一起使用
@Resource,由jsr-250提供,默认按照名称装配
8.spring基于xml注入bean的方式?
set()方法注入
构造器注入:①通过index设置参数的位置;②通过type设置参数类型
静态工厂注入
实例工厂