Spring关于IOC,DI,AOP的一点理解

1.Spring IOC

      Spring IOC主要用来降低程序间的耦合性,在不用Sping框架时,我们为了解决程序间的耦合问题,即尽量减少使用new 来创建对象,可以利用工厂模式来减耦,通过将对象的创建全部交给工厂类,工厂类中的某个方法通过读取配置文件properties,将对象创建出来并且存入Map容器中,其他类需要使用到某个对象直接到容器中去取,降低耦合性的例子还要还有JDBC注册驱动类的两种方法,一个是DriverManager.registerDriver(new Driver()),另一个是class.forName("com.mysql.jdbc.driver")利用反射来注册,有效的降低了耦合性,Spring 基于此,利用IOC将对象创建的权力交给Spring,某个类需要哪个对象直接到Spring容器中去取即可,这也就是控制反转。

 

2.Spring DI

     Spring DI,也就是依赖注入,容器在运行时直接将某个类需要用到的一些其他对象提供给他。

 

3.Spring AOP

   在程序的service层经常会用到一些大量重复的代码,例如为了保证数据库事务的一致性,我们需要在调用数据库CRUD方法前后加上一些有关事务的代码,还比如日志,在方法前后也加入,这样使得程序很复杂,也不便于维护,例如事务类的某个方法改变(autocommit,commit,rollback,close),需要改变service的方法太多,以前我们为了解决这种情况,通过实现代理类,代理类的实现方法有两种,一个是基于接口的实现类,代理对象通过Proxy.newInstance(xx.getClass().getClassLoader,xx.getClass().getInterfaces,new InvoationHander(){

}} 通过加强内部类的invoke方法来实现,还有一种是基于子类的实现,代理对象通过Enhancer.create(

producer.getClass(), new MethodInterceptor(){}来实现,注意内部类访问外部对象需要将外部对象设置为final,spring AOP基于动态代理技术实现他的面向切面编程

另外aop中的环绕通知实现有点类似于简化版的代理类

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值