赞
踩
IOC全称Inversion of Control,即“控制反转”,这是一种设计思想。对象创建的权利由Spring框架完成,由容器管理对象的生命周期。
DI的意思是依赖注入,和控制反转是同一个概念的不同角度的描述,即应用程序在运行时依赖IOC容器来动态注入对象需要的外部资源。
注入方式
1.set方式注入
2.构造方法注入
3.基于配置文件注入
<bean id = "c" class = "cn.spring.Cat"/>
<bean id = "dog" class = "cn.spring.Dog">
<property name = "token" value = "111"/> //set方法注入
<constructor-arg name = "cat" ref = "c"/> //构造方法注入
</bean>
4.基于注解开发
@Resource
@Autowired
AOP(Aspect Oriented Programming)意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
总结: Spring中的AOP 利用代理对象在不修改源代码的条件下,对方法进行扩展.
切入点表达式:如果目标对象满足切入点表达式的判断,则spring自动为其创建代理对象
1.bean表达式
根据bean的ID拦截指定的对象
2.within表达式
按照类型匹配,可以使用通配符*号
3.execution表达式
粒度比较细,可以按照方法参数进行匹配
4.@annotation表达式
作用:可以根据用户的自定义注解进行拦截
通知方法:对目标方法进行扩展的封装方法
1.前置通知:在目标方法执行前执行
2.后置通知:在目标方法执行后执行
3.异常通知:目标方法执行报错时执行
4.最终通知:目标方法之后都要执行的通知
5.环绕通知:在目标方法执行前后都要执行,控制目标方法
Spring中默认采用JDK代理,SpringBoot默认采用CGLIB代理。
BeanFactory和ApplicationContext都是接口,并且ApplicationContext是BeanFactory的子接口。同时它们都是spring的容器对象。
BeanFactory:
Spring最顶层的接口,实现了Spring容器的最基础的一些功能, 调用起来比较麻烦, 一般面向Spring自身使用;
BeanFactory在启动的时候不会去实例化Bean,从容器中拿Bean的时候才会去实例化。
ApplicationContext:
是BeanFactory的子接口,扩展了其功能, 一般面向程序员自身使用;
ApplicationContext在启动的时候就把所有的Bean全部实例化了。
优点
1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦
2.可以使用容易提供的众多服务,如事务管理,消息服务等
3.容器提供单例模式支持
4.容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能
5.容器提供了众多的辅助类,能加快应用的开发
6.spring对于主流的应用框架提供了集成支持,如hibernate,JPA,Struts等
7.spring属于低侵入式设计,代码的污染极低
8.独立于各种应用服务器
9.spring的DI机制降低了业务对象替换的复杂性
10.Spring的高度开放性,并不强制应用完全依赖于Spring,开发者可以自由选择spring的部分或全部
缺点
使用到了大量反射机制。反射机制非常占内存。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。