Spring组件与AOP基础操作:@Autowired @Resource @Inject解析

需积分: 0 0 下载量 60 浏览量 更新于2024-08-04 收藏 4.71MB DOCX 举报
"本资源主要讲解了Spring框架中的组件管理和AOP(面向切面编程)的基本使用操作,包括注解的对比、切面方法的表达式整理以及AOP执行顺序等核心概念。" 在Spring框架中,组件管理是通过依赖注入(DI)来实现的,而注解是DI的一种常见方式。`@Autowired`、`@Resource`和`@Inject`都是用来进行自动装配的,但它们之间存在细微差别。`@Autowired`是Spring框架自身的注解,它基于类型匹配,可以对字段、方法和构造函数进行注解,同时支持通过`@Qualifier`指定特定的bean。`@Resource`源自JSR-250规范,也基于类型匹配,但默认按名称进行装配。`@Inject`来自JSR-330,同样基于类型,但更简洁,不包含`require=false`属性,意味着必须找到一个匹配的bean。 `@Qualifier`和`@Primary`是用于控制依赖注入时的bean选择。`@Qualifier`可以明确指定需要哪个bean,而`@Primary`则是在有多个候选bean时,标记其中一个为首选。 `@Around`、`@Before`和`@After`是Spring AOP中的通知类型。`@Around`通知允许在方法调用前后执行自定义逻辑,它是最强大的通知类型,因为它可以控制是否继续执行原方法。`@Before`和`@After`分别表示在目标方法执行前和执行后执行的通知。根据AOP的执行顺序,`@Around`会先于`@Before`和`@After`执行。 在实际操作中,我们可以通过查看`AnnotationAwareAspectJAutoProxyCreator`的源码来理解Spring如何处理AOP代理的创建。这个类是Spring在启动时自动配置的,负责识别并处理带有切面注解的bean。`refresh()`方法是Spring容器的核心方法,它负责初始化所有bean。对于AOP相关的bean和业务bean,初始化的时机是不同的,AOP相关的bean通常在业务bean之前初始化,以确保切面可以正确地拦截和增强目标方法。 理解这些基本概念和机制对于深入学习和使用Spring框架至关重要,无论是进行组件配置还是实现复杂的企业级应用,都能帮助开发者更好地掌握Spring的工作原理。