如何理解spring的依赖注入
2014-03-27 18:03
85 查看
假如
我现在口很渴, 我需要喝水 那么我就需要先到小区小卖部去问 有没有我要喝的水 我是步行还是开车去 等等因素
也就是我为了一瓶水 我还要依赖其他的工具 这样 问题就变得很复杂了 怎么解决呢
小卖部提供了会员服务 只要注册了会员的 都能打电话去 然后告诉服务员 你需要什么水 小卖部就会自动的将货物送给你
这样你只需要2步
1. 去小卖部注册一个会员
2.你需要什么样的水
然后小卖部就会给你送什么样的水给你
在spring的思想中 也是这样的 Spring就是小卖部 我就是客户对象A 水就是商品B
在Spring中声明一个客户对象A 然后再告诉spring 客户对象A需要商品对象B
配置文件中 比如
<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>
在Spring这个商店(工厂)中,有很多对象/服务:userService,documentService,orgService,也有很多会员:userAction等等,声明userAction需要userService即可,Spring将通过你给它提供的通道主动把userService送上门来,因此UserAction的代码示例类似如下所示:
package org.leadfar.web;
public class UserAction{
private UserService userService;
public String login(){
userService.valifyUser(xxx);
}
//提供set方法注入spring
public void setUserService(UserService userService){
this.userService = userService;
}
}
在这段代码里面,你无需自己创建UserService对象(Spring作为背后无形的手,把UserService对象通过你定义的setUserService()方法把它主动送给了你,这就叫依赖注入!)
Spring依赖注入的实现技术是:动态代理
public void setUserService(UserService userService){
this.userService = userService;
}
}
在这段代码里面,你无需自己创建UserService对象(Spring作为背后无形的手,把UserService对象通过你定义的setUserService()方法把它主动送给了你,这就叫依赖注入!)
Spring依赖注入的实现技术是:动态代理
再说说AOP,即面向切面编程,面向切面编程的目标就是分离关注点。什么是关注点呢,就是你要做的事,就是关注点。假如你是个公子哥,没啥人生目标,天天就是衣来伸手,饭来张口,整天只知道玩一件事!那么,每天你一睁眼,就光想着吃完饭就去玩(你必须要做的事),但是在玩之前,你还需要穿衣服、穿鞋子、叠好被子、做饭等等等等事情,这些事情就是你的关注点,但是你只想吃饭然后玩,那么怎么办呢?这些事情通通交给别人去干。在你走到饭桌之前,有一个专门的仆人A帮你穿衣服,仆人B帮你穿鞋子,仆人C帮你叠好被子,仆人C帮你做饭,然后你就开始吃饭、去玩(这就是你一天的正事),你干完你的正事之后,回来,然后一系列仆人又开始帮你干这个干那个,然后一天就结束了!
AOP的好处就是你只需要干你的正事,其它事情别人帮你干。也许有一天,你想裸奔,不想穿衣服,那么你把仆人A解雇就是了!也许有一天,出门之前你还想带点钱,那么你再雇一个仆人D专门帮你干取钱的活!这就是AOP。每个人各司其职,灵活组合,达到一种可配置的、可插拔的程序结构。
从Spring的角度看,AOP最大的用途就在于提供了事务管理的能力。事务管理就是一个关注点,你的正事就是去访问数据库,而你不想管事务(太烦),所以,Spring在你访问数据库之前,自动帮你开启事务,当你访问数据库结束之后,自动帮你提交/回滚事务!
我现在口很渴, 我需要喝水 那么我就需要先到小区小卖部去问 有没有我要喝的水 我是步行还是开车去 等等因素
也就是我为了一瓶水 我还要依赖其他的工具 这样 问题就变得很复杂了 怎么解决呢
小卖部提供了会员服务 只要注册了会员的 都能打电话去 然后告诉服务员 你需要什么水 小卖部就会自动的将货物送给你
这样你只需要2步
1. 去小卖部注册一个会员
2.你需要什么样的水
然后小卖部就会给你送什么样的水给你
在spring的思想中 也是这样的 Spring就是小卖部 我就是客户对象A 水就是商品B
在Spring中声明一个客户对象A 然后再告诉spring 客户对象A需要商品对象B
配置文件中 比如
<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>
在Spring这个商店(工厂)中,有很多对象/服务:userService,documentService,orgService,也有很多会员:userAction等等,声明userAction需要userService即可,Spring将通过你给它提供的通道主动把userService送上门来,因此UserAction的代码示例类似如下所示:
package org.leadfar.web;
public class UserAction{
private UserService userService;
public String login(){
userService.valifyUser(xxx);
}
//提供set方法注入spring
public void setUserService(UserService userService){
this.userService = userService;
}
}
在这段代码里面,你无需自己创建UserService对象(Spring作为背后无形的手,把UserService对象通过你定义的setUserService()方法把它主动送给了你,这就叫依赖注入!)
Spring依赖注入的实现技术是:动态代理
public void setUserService(UserService userService){
this.userService = userService;
}
}
在这段代码里面,你无需自己创建UserService对象(Spring作为背后无形的手,把UserService对象通过你定义的setUserService()方法把它主动送给了你,这就叫依赖注入!)
Spring依赖注入的实现技术是:动态代理
再说说AOP,即面向切面编程,面向切面编程的目标就是分离关注点。什么是关注点呢,就是你要做的事,就是关注点。假如你是个公子哥,没啥人生目标,天天就是衣来伸手,饭来张口,整天只知道玩一件事!那么,每天你一睁眼,就光想着吃完饭就去玩(你必须要做的事),但是在玩之前,你还需要穿衣服、穿鞋子、叠好被子、做饭等等等等事情,这些事情就是你的关注点,但是你只想吃饭然后玩,那么怎么办呢?这些事情通通交给别人去干。在你走到饭桌之前,有一个专门的仆人A帮你穿衣服,仆人B帮你穿鞋子,仆人C帮你叠好被子,仆人C帮你做饭,然后你就开始吃饭、去玩(这就是你一天的正事),你干完你的正事之后,回来,然后一系列仆人又开始帮你干这个干那个,然后一天就结束了!
AOP的好处就是你只需要干你的正事,其它事情别人帮你干。也许有一天,你想裸奔,不想穿衣服,那么你把仆人A解雇就是了!也许有一天,出门之前你还想带点钱,那么你再雇一个仆人D专门帮你干取钱的活!这就是AOP。每个人各司其职,灵活组合,达到一种可配置的、可插拔的程序结构。
从Spring的角度看,AOP最大的用途就在于提供了事务管理的能力。事务管理就是一个关注点,你的正事就是去访问数据库,而你不想管事务(太烦),所以,Spring在你访问数据库之前,自动帮你开启事务,当你访问数据库结束之后,自动帮你提交/回滚事务!
相关文章推荐
- 如何理解Spring的控制反转IOC和依赖注入DI思想
- 如何理解Spring的控制反转IOC和依赖注入DI思想
- 如何简单的理解依赖注入详解
- 关于spring依赖注入到普通类中为null的情况解决理解方案
- SpringBoot系列: 理解 Spring 的依赖注入(二)
- Spring IOC(依赖注入、控制反转)概念理解
- 如何理解java中的依赖注入 通过构造函数和反射机制来实现的
- spring之依赖注入之理解
- Spring的IOC和依赖注入DI理解
- Spring如何实现自动依赖注入-------autowire
- 如何理解依赖注入和控制反转
- IOC,依赖倒置 (理解) Spring依赖注入的实现技术是:动态代理
- Spring依赖注入的详细理解
- 如何理解 Spring 注入
- 如何在quartz的job中实现spring的依赖注入
- 对spring控制反转以及依赖注入的理解
- 如何实现Spring依赖注入
- 理解Spring中的依赖注入和控制反转
- 【Spring】Spring依赖注入与控制反转理解
- Spring如何实现自动依赖注入-------autowire