Spring中的DI和AOP
来源:互联网 发布:uu淘宝店没评价 编辑:程序博客网 时间:2024/04/27 23:53
来源:http://blog.sina.com.cn/s/blog_51721d970100ak21.html
Spring同Struts和Hibernate一样,也是一个轻量级框架。他使现在有的技术更加易用,来推进编码最佳
实践。他的主要内容有:依赖注入容器,AOP(声明式事务),DAO/ORM,WEB集成等技术。
一:DI-->依赖注入
旨在解决复杂的软件系统。他引入了组件化的思想来解偶合。强制将组件的构件和使用分开,而明确定
义各个组件之间的接口。并在运行时注入。
那么如何在程序中使用DI呢?下面以坐车回家为例子来说明DI。
[接口和实现类有了。定义接口在spring中是必须的,因为程序运行前并不知道最终的实现类是哪个。罗
嗦一句,如果知道了直接new就可以了也就不需要注入了]
<bean id="bus" class="com.xxx.xxx.xxximpl"></bean>
上面的意思是创建一个class所指向的对应类的实例,id为这个bean的代号。也可以使用name。只是name
可以使用特殊字符而id不可以。id后面要使用到。要完成这个例子还需要在创建一个taxi出租车的bean。
再创建一个bean:
<bean id="run" class="com.xxx.xxx.xxx">
</bean>
这个bean意思为:class指向了一个类,并创建这个类的一个实例。这个类也就是这个例子中要运行的类,他定义了回家接口对象。而property节点就是为这个接口对象注入相应的子类实例使用的。节点中name值对应该类中接口对象名,ref为把某个受管理的bean(一定要实现这个接口)注入给这个接口对象。
二:AOP-->面向方面(切面)编程(完成声明式事务)
的角色的对象引用。
AOP是指面向切面编程,那么什么是切面呢?举个例子:比如去超市买东西,进门的时候算是一个面买完
东西付款的时候又是一个面。等等。切面也是自己抽象出来的。
那在代码中如何使用AOP呢
1:编写业务逻辑接口和实现类(被代理类的接口和实现类)
2:编写方面代码,(前置的通知或切面应实现 MethodBeforeAdvice接口)由spring提供
spring中的切面分为前置 后置 环绕 和异常等四类
3:组装(注入)
在spring配置文件中:
创建第一个bean 指向被代理类(里面包含逻辑代码)
<bean id="buytarget" class="com.xxx.xxx.xximpl"></bean>
创建第二个bean 通知切面类(在被代理类执行前执行(前置的)),他实现了MethodBeforeAdvice接口。
<bean id="befor" class="com.xxx.xxx.BeforeAdvice"></bean>
创建第三个bean 代理类:最终通过代理类访问业务逻辑
他的class是指向又spring提供的一个类:org.springframework.aop.framework.ProxyFactoryBean
他需要三个参数
1:target
2:interceptorNames 他是一个列表他包含了所有需要在beanTarget上执行的方面。注意,advisor列表
的次序是非常重要的。
3:proxyInterfaces 代理接口,也就是spring的代理类要实现的接口,通常和被代理的接口一样。
- Spring中的DI和AOP
- Spring中的DI和AOP
- spring中的IOC、DI、AOP
- Spring DI 和 AOP 基础
- 谈谈Spring中的IOC、DI和AOP概念
- 简介 Spring中的IOC,DI,AOP
- Spring IOC、DI、AOP原理和实现
- Spring IOC、DI、AOP原理和实现
- Spring的IoC DI和AOP理解
- Spring IOC、DI、AOP原理和实现
- Spring框架核心介绍:DI和AOP
- spring IOC,DI,AOP
- 关于spring框架中的IOC/DI和AOP,以及声明式事务管理的理解
- DI和AOP
- spring面试之关于AOP和DI的理解
- spring的IOC,DI依赖注入和AOP
- 理解Spring的AOP和Ioc/DI就这么简单
- 【Spring in action】依赖注入DI和AOP切面
- How to Build a PREEMPT_RTkernel
- 幽默-聪明的儿子
- wikioi p1011 数的计算
- Android用户界面UI组件--AdapterView及其子类(五) Spinner和SpinnerAdapter
- Configure Oracle 11gR2 RAC 一节点执行root.sh脚本报错
- Spring中的DI和AOP
- POJ 3274 Gold Balanced Lineup(哈希表)
- 赋值运算符重载函数被继承了吗?
- 兔子和獾——python游戏(python3.3.2版本Bug修改)
- wikioi p1978 Fibonacci数列 3
- shap
- wikioi p1501 二叉树最大宽度和高度
- Cross origin requests are only supported for HTTP
- 微软CEO史蒂夫·鲍尔默(Steve Ballmer)在12个月内退休