关于spring的IOC和AOP

时间:2021-01-06 09:07:19   收藏:0   阅读:21

简述

谈这个首先要明白什么是IOC IOC(IoC Inversion of Control (控制反转/反转控制)),注意它是?个技术思想,不是?个技术实现
描述的事情: Java开发领域对象的创建,管理的问题

所要实现的事情就是我们可以不自己去new对象来使用 而是通过IOC容器去创建对象然后我们直接去IOC容器中取来使用

说到这里还有一个概念需要提及 DI:Dependancy Injection(依赖注?)

IOC和DI其实本质上说的是同一件事情,只不过角度不同,IOC是站在被注入对象的角度上 讲述这个对象被控制反转。而DI是站在容器的角度上 讲述这个容器将对象进行依赖注入。

 

然后就是AOP

AOP: Aspect oriented Programming ?向切?编程/?向??编程
AOP是OOP的一个延续,或者说延伸

使代码在不改变原有逻辑的情况下 增强横切逻辑代码 根本上解藕 避免横切逻辑代码重复

 

下面来具体说明下关于Spring的IOC AOP的实现

首先 基于java的三层架构 我们想要在servlet中获取并使用或者service中获取并使用dao 那么我们最简单的方法便是new一个具体的实例来进行操作

但是这样的话 一直的new对象 又无法保证该对象会被按时回收 首先堆中会不断堆积 影响到jvm的具体性能 还有这样的代码耦合性太强 java的特点就是要考虑具体的解耦问题

那么 我们就需要考虑通过其他方式使该对象注入并能够使用

 

在这个情况下 我们就考虑到通过xml文件的方式去解决

  首先通过xml文件将具体的class文件进行定义 确定其路径以及id 之后通过工厂的方式生产其对象

1 <bean>
2     <bean id="AccountDao" class="com/lagou/edu/dao/AccountDao.java"/>
3 </bean>
1 // 实例化bean对象
2 for (int i = 0; i < list.size(); i++) {
3    Element element = list.get(i);
4    String id = element.attributeValue("id");
5    String clazz = element.attributeValue("class");
6    Class<?> aClass = Class.forName(clazz);
7    Object o = aClass.newInstance();
8    map.put(id, o);
9 }

通过工厂类将其实例化同时还要维护他的具体依赖关系 这个可以通过循环来处理他的property元素 之后  我们在将其放在map中以供之后方便使用

这样 我们就可以通过工厂类的方法来创建实力对象 解决代码的耦合问题

 

原文:https://www.cnblogs.com/yuztmt/p/14238767.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!