标准注解支持

Spring TestContext Framework 的所有配置都支持具有标准语义的以下注解。请注意,这些注解并非仅用于测试,可以在 Spring Framework 中的任何地方使用。

  • @Autowired

  • @Qualifier

  • @Value

  • @Resource (jakarta.annotation),如果存在 JSR-250

  • @ManagedBean (jakarta.annotation),如果存在 JSR-250

  • @Inject (jakarta.inject),如果存在 JSR-330

  • @Named (jakarta.inject),如果存在 JSR-330

  • @PersistenceContext (jakarta.persistence),如果存在 JPA

  • @PersistenceUnit (jakarta.persistence),如果存在 JPA

  • @Transactional (org.springframework.transaction.annotation) 属性支持有限

JSR-250 生命周期注解

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

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