🎃 常用注解

吞佛童子2022年10月10日
  • frame
  • Spring
大约 9 分钟

🎃 常用注解

1. MVC 业务组件

@Controller

@RestController

@Service

@Repository

@Configuration

@Component

@ComponentScan


2. 处理外部请求

@RequestMapping

@RequestBody

@RequestParam

@PathVariable

@ResponseBody

3. 自动装配获取 bean

@Autowired

@Primary

@Qualifier

  1. Spring 注解,只适用于 Spring 框架
  2. 首先根据 byType 自动装配
  3. 如果根据 byType 找到多个满足条件的 bean,则需要使用 @Qualifier | @Primary 进行区分,
    • 否则根据 byName 查找,若仍然无法区分,此时抛异常
    • @Primary 解决在同一接口有多个实现时,优先选择 @Primary 注解修饰的 bean

Resource

  1. Java 标准,支持绝大部分框架
  2. 默认 byName 自动装配
  3. 如果指定了 name,则用 byName 自动装配,如果指定了 type,则用 byType 自动装配
  4. 装配顺序
@Target({TYPE, FIELD, METHOD}) // 类,字段,方法
@Retention(RUNTIME)
public @interface Resource {
    String name() default "";
    Class<?> type() default java.lang.Object.class;
    // ...
}

@Bean

  1. 指示一个方法生成一个由 Spring 容器管理的 bean。
  2. @Bean 方法也可以在未使用 @Configuration 注释的类中声明。
    • 例如,bean 方法可以在 @Component 类中声明,甚至可以在普通的旧类中声明。在这种情况下, @Bean 方法将以所谓的 “精简”模式 进行处理
  3. 可以与 @Scope@Lazy @DependsOn@Primary 注解一起使用来声明这些语义
  4. 可装配 任意的 bean,尤其适合装配那些初始化过程十分复杂的 bean
@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE}) // 作用于 方法
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Bean {
	@AliasFor("name")
	String[] value() default {};
	
	@AliasFor("value")
	String[] name() default {};
	
	// 在初始化期间调用 bean 实例的方法的可选名称。不常用,因为可以直接在 Bean 注释方法的主体内以编程方式调用该方法。
	String initMethod() default ""; 
	// 在关闭应用程序上下文时调用 bean 实例的方法的可选名称,例如 JDBC DataSource 实现上的 close() 方法
	String destroyMethod() default AbstractBeanDefinition.INFER_METHOD;
}

4. 作用于 Bean 生命周期

@PostConstruct

@PreDestroy


5. AOP

@Aspect

@PointCut

通知

@Order

@Around

@Before

@After

@AfterThrowing

@AfterReturning


6. 事务

@Transactional


7. SpringBoot 启动

@SpringBootApplication

上次编辑于: 2022/10/10 下午8:43:48
贡献者: liuxianzhishou