我有一個域類,我想從外部配置中自動填充。這裏是我的域類:Autowire在單元測試中工作,但不在主java類中
@Data
@Configuration
@PropertySource("classpath:application.properties")
public class StudioVo {
@Value("${studio.code}")
private code;
@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
}
這裏是我的上下文XML:
<bean class="org.springframework.batch.core.scope.StepScope" />
<bean id="ItemReader" class="com.sdm.studio.reader.StudioReader" scope="step">
<property name="studioVo" ref="StudioVo" />
</bean>
<bean id="StudioConfigVo" class="com.sdm.studio.domain.StudioVo" />
</bean>
這裏就是我想用VO類:當我運行它
@Slf4j
@Data
public class StudioReader implements ItemReader<List<Studio>> {
private StudioVo studioVo;
public List<Studio> read() throws Exception {
System.out.println("getCode: " + studioVo.getCode()); //code is null here
return null;
}
}
然而通過自動裝配進行單元測試,它運行良好。就像這樣:
@RunWith(SpringRunner.class)
@SpringBootTest
public class StudioTest {
@Autowired
private StudioVo studioVo;
@Test
public void testAutoPopulationOfStudio(){
System.out.println("getCode: "+ studioVo.getCode()); // works!
// Assert.assertTrue(studioVo.getCode().equals("102"));
}
}
不知道是怎麼回事就在這裏 - 我與包裹在春季啓動(舊Spring Batch的應用程序工作,所以有基於XML和基於Java的配置的混合 - 並且可以是這個問題的原因)。我錯過了什麼?
看看context.xml - 它是在那裏定義的。如果我Autowire,它發現不止一個bean,不能autowire。 – Yana