Spring 常用注解
1. @Component
通过反射调用当前类的无参构造创建对象并将该对象添加至 IoC 容器中, 让 Spring 来管理该对象
可以指定 id, 如果为指定, 则 id 默认为当前类名 (首字母小写)
有三个衍生注解, 对应
MVC
三层架构模式
@Controller
用于标识表现层的 bean
@Service
用于标识业务层的 bean
@Repository
用于标识数据层的 bean
2. @Configuration
- 标记当前类是配置类
- 将该类添加至 IoC 容器中, 让 Spring 来管理该对象, id 的命名规则同上
3. @Bean
- 作用在方法上
- 将方法的返回值添加至 IoC 容器中, 让 Spring 来管理该对象
- 一般用来配置第三方 bean
- 可以指定对象的 id, 如果没有指定, 则 id 默认为方法名
- 如果方法有参数, 它会从 IoC 容器中按类型匹配的方式获取相应对象并将其注入到形参中
4. @Import
- 作用在 Spring 的主配置类上
- 用来导入其它的配置类, 降低耦合度
5. @Autowired
- 作用在引用类型的成员属性上
- Spring 会自动对该属性进行自动装配
- 默认是按类型查找并注入, 如果有多个相同类型的 bean, 则会尝试按名称获取并注入
- 基于暴力反射的方式, 无需使用到该类提供给该属性的 Setter 方法
6. @Qualifier
- 配合
@Autowired
进行使用, 不可单独存在- 用于指定 id 名称来获取 bean 并注入到属性中
7. @Resource
- 按照属性名称来进行依赖注入
8. @Value
- 简单类型的依赖注入
- 简单类型: 基本数据类型 + String
9. @Scope
- 定义 bean 的作用范围, 或者说采用什么模式来创建 bean
- 一般使用两种模式:
prototype
和singleton
10. @ComponentScan
- 自动扫描指定包下所有类
- 将带
@Service、@Component、@Controller、@Repository
等注解标注的类的对象并添加至容器中
11. @PropertySource
- 用于在 Java 类中引入 properties 配置文件
- 一般配合
@Value
使用, 用来注入配置文件中的属性信息
12. @Aspect
- 作用在类上
- 标记当前类为切面类
13. @Around
- 作用在方法上
- 标记当前方法为一个环绕通知方法
- 可以认为是结合了前置, 后置, 异常, 最终通知的方法, 使用和操作更加灵活方便
14. @PointCut
- 用于定义
AOP
切入点表达式- 一般依托于一个不具有实际意义的方法 (无参数, 无返回值, 无逻辑), 用于提高表达式的复用性
15. @EnableTransactionManagement
- 一般作用于主配置类上
- 用于开启 Spring 的事务管理
16. @Transactional
- 一般作用在方法上
- 标记当前方法将使用事务
17. @@EnableAspectJAutoProxy
- 一般作用于主配置类上
- 用于开启 Spring 对
AOP
注解驱动支持
18. @ContextConfiguration
- 作用于单元测试类上, 用于指定当前环境的主配置类
- 需配合 Junit 提供的
@RunWith
注解来来完成整合 Spring 和 Junit