您的位置:首页 > 编程语言 > Java开发

Spring中IOC和AOP的理解说明

2017-08-10 16:46 253 查看

IOC说明:

ioc:依赖注入,依赖倒置。


例子说明

以买东西的例子来说明ioc的理解。
比如你要去一个超市买水。这里把你看作是类A,水看成是类B,超市看成是Spring。如果超市离得近的话,你可以直接去买水,就好比是直接把B对象给你类A了用代码表示为:
class A{
B  b = new B();
}
当然这也是可以得。但是如果超市离得比较远的话,你是不是要依赖于骑个车等工具去买水;但是如果超市提供上门服务直接把水送到你面前岂不是更好。这个就是spring提供的ioc来把B对象直接送到你面前。代码体现:
假设A为userAction ,B 为userService;

<bean id="userService" class="org.leadfar.service.UserService"/>
<bean id="documentService" class="org.leadfar.service.DocumentService"/>
<bean id="orgService" class="org.leadfar.service.OrgService"/>
<bean id="userAction" class="org.leadfar.web.UserAction">
<property name="userService" ref="userService"/>
</bean>


在这段代码里面,你无需自己创建UserService对象(Spring作为背后无形的手,把UserService对象通过你定义的setUserService()方法把它主动送给了你,这就叫依赖注入!)

public class UserAction{
private UserService userService;
public String login(){
userService.valifyUser(xxx);
}
public void setUserService(UserService userService){
this.userService = userService;
}
}


AOP

再说说AOP,即面向切面编程,面向切面编程的目标就是分离关注点。
什么是关注点呢,就是你要做的事,就是关注点。假如你是个公子哥,
没啥人生目标,天天就是衣来伸手,饭来张口,整天只知道玩一件事!
但是在玩之前,你还需要穿衣服、穿鞋子、叠好被子、做饭等等等等事情,
这些事情就是你的关注点,但是你只想吃饭然后玩,那么怎么办呢?
这些事情通通交给别人去干。在你走到饭桌之前,有一个专门的仆人A帮你穿衣服,
仆人B帮你穿鞋子,仆人C帮你叠好被子,仆人C帮你做饭,然后你就开始吃饭、去玩(这就是你一天的正事),
你干完你的正事之后,回来,然后一系列仆人又开始帮你干这个干那个,然后一天就结束了!

AOP的好处就是你只需要干你的正事,其它事情别人帮你干。也许有一天,你想裸奔,不想穿衣服,
那么你把仆人A解雇就是了!也许有一天,出门之前你还想带点钱,那么你再雇一个仆人D专门帮你干取钱的活!
这就是AOP。每个人各司其职,灵活组合,达到一种可配置的、可插拔的程序结构。

从Spring的角度看,AOP最大的用途就在于提供了事务管理的能力。
所以,Spring在你访问数据库之前,自动帮你开启事务,当你访问数据库结束之后,
自动帮你提交/回滚事务!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: