Spring是完全面向接口的设计,降低程序耦合性,主要是事务控制并创建bean实例对象。在ssh整合时,充当黏合剂的作用。IO(Inversion of Control)控制反转/依赖注入,又称DI(Dependency Injection)(依赖注入)
IOC的作用:产生对象实例,所以它是基于工厂设计模式的
Spring IOC的注入 通过属性进行注入,通过构造函数进行注入
注入对象数组 注入List集合
注入Map集合 注入properties类型
Spring IOC自动绑定模式:
可以设置autowire按以下方式进行绑定 。 按byType只要类型一致会自动寻找,按byName自动属性名称进行自动查找匹配
AOP面向方面(切面)编程
AOP是OOP的延续,是Aspect Oriented Programming的缩写,意思是面向方面(切面)编程。
注:OOP(Object—Oriented programming)面向对象编程
AOP主要应用于肉质记录,性能统计,安全控制,事务处理(项目中使用的)等方面。
Spring中实现Aop技术:在spring中可以通过代理模式来实现Aop
代理模式分为:
静态代理:一个接口,分别有一个真实实现和一个代理实现
动态代理:通过代理类的代理,接口和实现类之间可以不直接发生联系,而可以在运行期(Runtime)实现动态关联。
动态代理有两种实现方式,可以通过jdk的动态实现也可以通过cglib来实现而Aop默认是通过jdk的动态来实现的。jdk的动态代理必须有接口的支持,而cglib不需要,它是基于类的。
Spring AOP的事物描述:
在spring—common.xml里通过<aop:config>里面先设定一个表达式,设定对service里那些方法 如:对add*,delete*,update*等开头的方法进行事物拦截,我们需要配置事物的传播(propagation=”REQULRED”)特性,通常把增 删 改以外的操作需要配置成只读事物(read—only=“true”),只读事物可以提高性能。之后引入tx:advice,在tx:advice 引用 transactionManager(事物管理),在事物管理里在引入sesseionFactory,sesseionFactory注入 dateSource,最后通过<aop:config>引入txAdvice
spring实现ioc控制反转描述:
原来需要我们自己进行备案的创建以及引入,而现在交给spring容器去完成bean的创建以及注入。
所谓的“控制反转”就是对象控制权的转移,从程序代码本身转移到外部容器。
官方解释:
控制反转既然、IOc(Inversion of Control),它把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。所谓的“控制反转”概念就是对组件对象控制权的转移,从程序代码本省转移到了外部容器