我正在尝试配置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