小编p.z*_*idz的帖子

@SpringBootTest 导致 @PostConstruct 被调用两次

在 Spring Boot 1.4 版本中,一些测试注释已被弃用,“转而支持 {@link SpringBootTest}”。

然而,简单地用新的注释替换已弃用的注释,会给我带来一个奇怪的副作用,@PostConstruct 被调用两次。

所以我们假设它是之前

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = {ApplicationTestContext.class})
@IntegrationTest
@Transactional
public class EmployeesControllerSpringTest {

@Inject
private EmployeeRepository employeeRepository;

@Inject
private VenueRepository venueRepository;

@Inject
private TestUtilDummyObjects dummyObjects;

@Inject
private MappingJackson2HttpMessageConverter jacksonMessageConverter;

@Inject
private EntityManager entityManager;

@Inject
private ExceptionTranslator exceptionTranslator;

private MockMvc mockMvc;

@PostConstruct
public void postConstruct() {

    EmployeesController sut = new EmployeesController(employeeRepository);

    mockMvc = MockMvcBuilders
            .standaloneSetup(sut)
            .setControllerAdvice(exceptionTranslator)
            .setMessageConverters(jacksonMessageConverter)
            .build();
}
Run Code Online (Sandbox Code Playgroud)

因此,用以下内容替换已弃用的注释

@RunWith(SpringRunner.class)
@SpringBootTest(classes = {ApplicationTestContext.class})
@Transactional
Run Code Online (Sandbox Code Playgroud)

导致 @PostConstruct 被调用两次。

也许有人可以建议,我做错了什么?

请参阅下面的ApplicationTestContext.class:

//@TestConfiguration
//@SpringBootConfiguration
@ComponentScan(excludeFilters = …
Run Code Online (Sandbox Code Playgroud)

java spring spring-boot

5
推荐指数
0
解决办法
2057
查看次数

标签 统计

java ×1

spring ×1

spring-boot ×1