【Spring】IoC与AOP学习续

有关springAOP的学习,在这篇文章中已经谈到了aop的前置增强和后置增强以及IoC的设值注入,不明白的朋友们可以点击链接跳到此篇去学习下,有代码示例。而此篇是来扩展学习下AOP的环绕增强、异常抛出增强、最终增强以及使用采用注解方式实现IoC

1. 前置增强是在目标方法前织入增强处理。 <aop:before>元素定义
2. 后置增强是在目标方法后织入增强处理。 <aop:after-returning>元素定义
3. 异常抛出增强的特点是在目标方法抛出异常时织入增强处理。 <aop:after-throwing>元素定义
4. 最终增强的特点是无论方法抛出异常还是正常退出,该增强都会被执行,类似于异常处理机制的finally块,一般用来释放资源。 <aop:after>元素定义
5. 环绕增强的功能最为强大,Spring把目标方法的控制权全部交给了它,环绕增强在目标方法的前后都可以织入增强处理。 <aop:around>元素定义


在引言中的那篇文章中打印机程序用的是采用XML配置文件实现的,而Spring在从2.0版本就开始引入注解的配置方式,所以现在我们也来学习下使用注解来实现IoC,体会减少配置文件的代码量。
JSR 全称为:Java Specification Requests,即Java规范提案

本篇学习到的注解:

  • @Component注解:用来定义Bean组件,相当于XML配置文件中的<bean id="" class=""/>
  • @Service注解:用来标注这是一个业务类,注入dao。
  • @Repository注解:用来标注这是一个DAO类,实现dao访问。
  • @Controller注解:用来标注这是一个控制器类,注入服务。
  • @Autowired注解:用来自动装配Bean,即按类型匹配的方式为属性自动装配合适的依赖对象,容器会查找和属性相匹配的Bean组件,并自动为属性注入。 注:使用该注解时,若找不到相匹配的Bean组件则Spring容器会抛出异常,可以使用@Autowired(required=false)来避免抛出异常,默认required是true的。还有@Autowired注解可以用在字段或者方法上。
  • @Qualifier注解:是配合@Autowired注解的,因为往往有多个类型匹配的Bean,会导致自动装配区分不出bean组件,抛出异常Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type,所以此时就得使用此注解来区分Bean的名称。如下:
@Service("userService")
public class UserServiceImpl implements UserService{
   @Autowired
   @Qualifier("userDao")
   private UserDao dao;
}
  • @Resource注解:实现组件装配,和@Autowired注解类似
    注意:使用以上注解时,得在XML配置文件中开启包扫描,即<context:component-scan base-package="..." />,扫描多个包就用逗号隔开,Spring会扫描这些包中的所有的类。
  • @Aspect注解:用来定义切面。
  • @Before注解:用来定义方法为前置增强。如下:
@Before("execution(* service.UserService.*(..))")
public void before(){
    //省略代码
}
  • @AfterReturning注解:用来定义方法为后置增强。
  • @AfterThrowing注解:用来定义方法为异常抛出增强。
  • @After注解:用来定义方法为最终增强。
  • @Around注解:用来定义方法为环绕增强。
  • 注意:使用以上注解时,得在XML配置文件中添加<aop:aspectj-autoproxy />元素启用对@Aspectj注解的支持。
    除了以上介绍的注解之外,还有许多注解没办法全部提到,大家可以用到再查开发手册或者百度下~

附带相关知识点链接分享:

1、spring注解详析
2、面试问题:怎么控制多个aop的执行循序
3、定义切入点和指示符
4、切点表达式总结

猜你喜欢

转载自blog.csdn.net/weixin_34107955/article/details/87518678
今日推荐