spring的Ioc和AOP

来源:互联网 发布:微擎源码 编辑:程序博客网 时间:2024/05/28 17:05

 springIoc(控制反转和依赖注入) 

控制反转:就是由容器控制程序之间的(依赖)关系,并不是传统实现中,由程序代码直接操控   

     依赖注入:组件之间的依赖关系由容器在运行期决定 ,由容器动态的将某种依赖关系注入到组件之中 。


AOP:面向切面,是一种编程思想,OOP的延续。将系统中非核心的业务提取出来,进行单独处理。比如事务、日志和安全等。这个简单来说就是可以在一段程序之前或者之后做一些事。

比如:很多方法都可能会抛异常,你要记录这个异常到日志中去,可以写个拦截器,在这个类中记录日志,在spring.xml中配置一个记录这些日志的方法的拦截器,在这个方法执行后调用这个拦截器,记录日志。这样就不用每次抛异常都要手动记录日志。

spring的事务管理用到的就是AOP这样也可以提高程序的内聚性。



在以往的JDBCTemplate中事务提交成功,异常处理都是通过Try/Catch 来完成,而在Spring中。Spring容器集成了TransactionTemplate,她封装了所有对事务处理的功能,包括异常时事务回滚,操作成功时数据提交等复杂业务功能。这都是由Spring容器来管理,大大减少了程序员的代码量,也对事务有了很好的管理控制。hibernate中也有对事务的管理,hibernate中事务管理是通过SessionFactory创建和维护Session来完成。而SpringSessionFactory配置也进行了整合,不需要在通过hibernate.cfg.xml来对SessionaFactory进行设定。这样的话就可以很好的利用Sping对事务管理强大功能。避免了每次对数据操作都要现获得Session实例来启动事务/提交/回滚事务还有繁琐的Try/Catch操作。这些也就是Spring中的AOP(面向切面编程)机制很好的应用。一方面使开发业务逻辑更清晰、专业分工更加容易进行。另一方面就是应用Spirng  AOP隔离降低了程序的耦合性使我们可以在不同的应用中将各个切面结合起来使用大大提高了代码重用度

Spring中有哪三种依赖注入的方式?

spring有三种注入方式:

1)根据属性注入也叫set方法注入

2)根据构造方法注入

3)根据注解进行注入(推荐)



Spring的AOP和IOC都是为了解决系统代码耦合度过高的问题,使代码重用度高,易于维护。

原创粉丝点击