我正在嘗試配置spring配置中的推土機。當使用xml配置時,它會像在spring配置文件中設置資源
<bean class="org.dozer.spring.DozerBeanMapperFactoryBean">
<property name="mappingFiles" value="classpath*:dozer/**/*.dzr.xml"/>
</bean>
如何在配置文件中定義資源。我嘗試使用ctx.getResource()
,但我無法訪問配置類中的ApplicationContext。
我嘗試了ContextRefreshedEvent並從那裏添加資源,但仍然沒有運氣。 (afterPropertiesSet方法已經被調用,添加映射不會工作)
public class ContextRefreshedEventBuilder extends ContextRefreshedEvent {
public ContextRefreshedEventBuilder(ApplicationContext ctx) {
super(ctx);
DozerBeanMapperFactoryBean mapper = ctx.getBean(DozerBeanMapperFactoryBean.class);
try {
mapper.setMappingFiles(ctx.getResources("classpath*:dozer/**/*.dzr.xml"));
} catch (IOException e) {
e.printStackTrace();
}
}
}
還試圖用使用ClassPathResource但找不到正確的方法
DozerBeanMapperFactoryBean mapper = new DozerBeanMapperFactoryBean();
mapper.setMappingFiles(new Resource[]{new ClassPathResource("classpath*:dozer/**/*.dzr.xml")});
return mapper;
如何添加使用ClassPathResource作爲映射位置?
---答案---
@Bean
public DozerBeanMapperFactoryBean configDozer() throws IOException {
DozerBeanMapperFactoryBean mapper = new DozerBeanMapperFactoryBean();
Resource[] resources = new PathMatchingResourcePatternResolver().getResources("classpath*:dozer/**/*.dzr.xml");
mapper.setMappingFiles(resources);
return mapper;
}
注入'ResourceLoader'或'ApplicationContext'。用它構建一個'PathMatchingResourcePatternResolver'(你也可以嘗試在沒有上下文或資源加載器的情況下創建),並使用'getResources'方法來獲取資源。 –
我不會拋出一個異常,但只要加載'拋出IOException'如果出現問題加載資源,你可能不想啓動你的應用程序。 –
謝謝。好點:) – alizelzele