栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring IOC AOP

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring IOC AOP

1 IOC(Inverse of control):控制反转,也可以成为依赖倒置

所谓依赖,从程序的角度看,就是比如A调用B的方法,那么A就依赖于B,反正A要用到B,则A依赖于B。所谓倒置,你必须理解如果不倒置,会怎么着,因为A必须要有B,才可以调用B。如果不倒置,意思就是A主动获取B的实列:B b = new B();,这就是最简单获取B实例的方法,当然还有各种设计模式可以帮助你去获得B的实例,比如工厂,locator等等),然后你就可以调用b对象了。所以,不倒置,意味着A要主动获取B,才能使用B;倒置就是A要调用B的话,A并不需要主动获取B,而是由其他人自动将b送上门来。

形象的举例子就是:通常情况下,假如你有一天在家里口渴了,要喝水,那么你可以到小区的小卖部去,告诉他们,你需要一瓶水,然后小卖部给你一瓶水!这本来没有太大问题,关键是如果小卖部很远,那么你必须知道,从你家如何到小卖部;小卖部里是否有你需要的谁;你还要考虑是否开着车去;等等等等,也许有太多的问题要考虑了。也就是说,为了一瓶水,你还可能要依赖于车等等这些交通工具或别的工具,问题是不是变复杂了?那么如何解决这个问题呢?
解决这个问题的方法很简单:小卖部提供送货上门服务,凡是小卖部的会员,你只要告知小卖部你需要什么,小卖部将主动把货物给你送上门来!这样一来,你就可以活得更加轻松自在。
第一:向小卖部注册为会员
第二:告诉小卖部你需要什么
这和Spring的做法很类似!Spring就是小卖部,你就是a对象,水就是b对象
第一:在spring中声明一个类:a
第二:告诉spring,a需要b
假设a是ueraction类,而b是userService类





	

在spring这个商店中,有很多对象/服务:userService,documentService,orgService,也有很多会员:userAction等等,声明userAction需要userService即可,Spring将通过你给他提供的通道主动把userService送上门来,因此useraction的代码示例类似如下所示

```java
package org.leadfar.web;
public class UserAction{
	private UserService userService;
	public String login(){
		userService.vailfyUser(xxx);
		}
		
2.AOP:面向切面编程
面向切面编程的目标就是分离关注点,什么是关注点呢?就是你要做的事,就是关注点。假如你是个公子哥,没啥人生目标,天天就是衣来伸手饭来张口,整天只知道玩一件事!那么,每天你一睁眼,就光想着吃完饭就去玩(你必须要做的事),但是在玩之前,你还需要穿衣服,穿鞋子,叠好被子,做饭等等等等事情,这些事情就是你的关注点,但是你只想吃饭然后玩,那么怎么办呢?这些事情统统交给别人去干,在你走到饭桌之前,有一个专门的仆人a帮你穿衣服,仆人b帮你穿鞋子,仆人c帮你叠好被子,然后你就开始吃饭,去玩(这就是你一天的正事),你干完你的正事之后,回来,然后一系列仆人又开始帮你干这个干那个,然后一天就结束了!

AOP的好处就是你只需要干你的正事,其他事情别人帮你干,也许有一天,你想裸奔,不想穿衣服,那么你把仆人a解雇就是了!也许有一天,出门之前你还想带点钱,那么你在雇一个仆人d专门帮你敢取钱的活!这就是aop。每个人各司其职,灵活组合,达到一种可以配置的,可拔插的程序结构。
从sping角度来看,aop最大的用途就在于提供了事务管理的能力。事务管理就是一个关注点,你的正事就是去访问数据库,而你不想管事务,所以,spring在你访问数据库之前,自动帮你开启事务,当你访问数据结束之后,自动帮你提交/回滚事务!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/315044.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号