关于spring的IOC和AOP
简述
谈这个首先要明白什么是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