简单罗列下 Spring Framework 相关的注解,仅仅起到索引的作用。
For Bean#
@Bean#
标识一个 Bean 的工厂方法,Spring 会在需要的时候自动生成 Bean
@DependsOn#
显式声明 Bean 的依赖关系
@Lazy#
指示 Bean 是否懒加载
@Primary#
控制多个可用 Bean 的情况下的优先级
@Profile#
指示一个 Bean / Configuration 类仅在指定的 Profile 激活的时候加载。
@Configuration#
用于类,该注解用来标识一个类中包含一个或多个 Bean。默认情况下,@Cofiguration 类下声明的 Bean 会被 Spring 进行代理等操作,以提供一些高级功能。在对于没有在 @Configuration 类中声明的 Bean,在这种情况下,Bean 为 Lite 模式。
@Scope#
该注解用于声明一个 Bean 的作用域,可用于 Bean 方法或类。
- 与 @Bean 一起用作方法级注解时, @Scope 指示用于从方法返回的实例的范围的名称。
- 与 @Component 一起用作类型级注释时, @Scope 指示用于注释类型实例的范围名称。
@Value#
填入特定的 PlaceHolder 表达式,Spring 的 Context 会自动替换为配置文件中的值
@ComponentScan#
配置组件扫描,定义要扫描的特定包。如果没有定义特定的包,将从声明该注解的类的包开始递归扫描。
基于角色的注解#
在 org.springframework.stereotype包下的多个注解标识着对应类在整体架构中所扮演的角色。
强调语义,属于概念层面的内容,并不影响作为 Bean 会怎么样,但是其他的 Spring 组建则可能根据这样的语义进入工作。
@Component#
这是 Spring 的一个高级抽象的注解,表示该类是应用的一个组件。
当使用基于注解的配置和类路径扫描时,带有此注解的类被视为自动检测的候选类,会被当作 Bean。
@Service#
@Component 的变体,是对 DDD 对一种抽象,由该注解标注的类提供一种特定服务。
@Repository#
@Component 的变体,是对 DDD 对一种抽象,由该注解标注的类提供一种用于封装模拟对象集合的存储、检索和搜索行为的机制。
@Controller#
@Component 的变体,由该注解标注的类被视为 spring web 中的 Controller。
other#
@Indexed#
自 Spring 5.0 引入,该注解作为功能注解,用于索引各个组件类,加快启动速度。
AOP 注解#
@Aspect#
标注一个切面类
@PointCut#
标识一个切入点
@After、@Before、@Around、@AfterThrowing、@AfterReturning 标识一个 Advice 在对应连接点的执行时机
@EnableAspectJAutoProxy
启用 Spring AOP