第六章 IoC和AOP使用扩展

本文深入探讨Spring中的IoC(依赖注入)和AOP(面向切面编程),包括构造注入、属性注入、集合类型注入、异常处理增强、最终增强和环绕增强等。同时,介绍了使用注解进行IoC配置的方法,如@Repository、@Service和@Controller,以及如何通过@Autowired进行自动装配。此外,还涉及了AspectJ和@AspectJ注解在定义切面和增强类型中的应用。
摘要由CSDN通过智能技术生成

第六章 IoC和AOP使用扩展

多种方式实现依赖注入
构造注入
一个元素表示构造方法的一个参数,且使用时不区分顺序。当构造方法的参数出现混淆,无法区分时,可以通过元素的index属性指定该参数的位置索引,位置从0开始。元素提供了type属性用来指定参数的类型,避免字符串和基本数据类型的混淆。
构造注入的时效性好,在对象实例化时就得到所依赖的对象,便于在对象的初始化方法中使用依赖对象;但受限于方法重载的形式,使用灵活性不足。并且大量的setter访问器增加了类的复杂性。Spring并不倾向于某种注入方式,用户应该根据实际情况进行合理的选择。当然Spring提供的注入方式不只这两种,只是这两种方式用得最普遍,有兴趣的学员可通过Spring的开发手册了解其他注入方式。
使用P命名空间实现属性注入
语法 p:属性名=“属性值”
p:属性名-ref=“Bean的id”
注入不同数据类型
1、注入直接量(基本数据类型)
如果属性值包含了XML中的特殊字符(&,<,>,",’),则注入时需要进行处理,
2、引用其他Bean组件
Spring中定义的Bean可以互相引用,从而建立依赖关系,除了使用ref属性,还可以通过子元素实现。property
3、使用内部Bean
在引用了property中在嵌套bean,该方式就是内部bean。
4、注入集合类型的属性
对于List或数组类型的属性,可以使用标签注入。标签中间可以使用、等标签注入集合元素,甚至是另一个标签。对于Set类型的属性,可以使用标签注入。
5、注入null和空字符串值
可以使用注入空字符串值,使用注入null值。
其他增强类型
异常抛出增强
异常抛出增强的特点是在目标方法抛出异常时织入增强处理。使用异常抛出增强,可以为各功能模块提供统一的、可拨插的异常处理方案。使用aop:after-throwing元素可以定义异常抛出增强。
最终增强
最终增强的特点是无论方法抛出异常还是正常退出,该增强都会得到执行,类似于异常处理机制中finally块的作用,一般用于释放资源。使用aop:after元素即可定义最终增强。
环绕增强
环绕增强在目标方法的前后都可以织入增强处理。环绕增强是功能最强大的增强处理,Spring把目标方法的控制权全部交给了它。在环绕增强处理中,可以获取 或修改目标的参数,返回值,可以对它进行异常处理,甚至可以决定目标方法是否被执行。
使用注解实现IoC的配置
使用注解定义Bean
@Repository:用于标注DAO类
@Service:用于标注业务类
@Controller:用于标注控制器类
使用注解实现Bean组件装配
@Autowired 采用按类型匹配的方式为属性自动装配合适的依赖对象,即容器会查找和属性类型相匹配的Bean组件,并自动为属性注入。若容器中有一个以上类型相匹配的Bean时,则可以使用@Qualifier指定所需要的Bean的名称。
加载注解定义的Bean、
首先在Spring配置文件中添加context命名空间的声明, 然后使用context命名空间下的component-scan标签扫描注解标注的类。base-package属性指定了需要扫描的基准包(多个包名可用逗号隔开。)
使用Java标准注解完成装配
使用注解定义切面
AspectJ简介
AspectJ 是一个面向切面的框架,它扩展了Java语言,定义了AOP语法,能够在编译期提供代码的织入,所以它有一个专门的编译器用来生成遵守字节编码规范的Class文件。
使用注解标注切面
配置文件中首先要导入aop命名空间。只需在配置文件添加aop:aspectj-autoproxy/元素,就可以启用对于@AspectJ注解的支持,Spring将自动匹配的Bean创建代理。
使用注解定义其他类型的增强
Spring的切面配置小结
Spring在同一个问题上提供了多种多种灵活选择,反倒容易令初学者感到迷惑。我们一个根据项目的具体情况做出选择:如果项目采用JDK5.0以上版本,可以考虑使用@AspectJ注解方式,减少配置的工作量;如果不愿意使用注解或项目采用的JDK版本较低而无法使用注解,则可以选择使用aop:aspect配合普通JavaBean的形式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值