以下注解支持 Spring TestContext 框架的所有配置的标准语义。请注意,这些注解不是专门针对测试的,可以在 Spring 框架的任何地方使用:

    • @Autowired
    • @Qualifier
    • @Value
    • @Resource (javax.annotation) 如果存在 JSR-250
    • @ManagedBean (javax.annotation) 如果存在 JSR-250
    • @Inject (javax.inject) 如果存在 JSR-330
    • @Named (javax.inject) 如果存在 JSR-330
    • @PersistenceContext (javax.persistence) 如果存在 JPA
    • @PersistenceUnit (javax.persistence) 如果存在 JPA
    • @Required
    • @Transactional (org.springframework.transaction.annotation) with 有限的属性支持

    :::info JSR-250 生命周期注解:

    在 Spring TestContext 框架中,你可以在 ApplicationContext 中配置的任何应用组件上使用具有标准语义的 @PostConstruct 和@PreDestroy。然而,这些生命周期注解在实际测试类中的使用是有限的。

    如果一个测试类中的方法被 @PostConstruct 注解,该方法就会在底层测试框架的任何方法之前运行(例如,用 JUnit Jupiter 的@BeforeEach 注解的方法),这适用于测试类中的每个测试方法。另一方面,如果一个测试类中的方法被 @PreDestroy 注解,该方法就永远不会运行。因此,在一个测试类中,我们建议你使用底层测试框架的测试生命周期回调,而不是 @PostConstruct 和 @PreDestroy。 :::