我需要在Spring控制器中返回图像.我在这个Spring MVC中尝试回答:如何在@ResponseBody中返回图像?但它不起作用
我的代码是这样的
@RequestMapping(value = "cabang/photo", method = RequestMethod.GET)
@ResponseBody
public ResponseEntity<byte[]> getPhoto() throws IOException {
File imgPath = new File("D:\\test.jpg");
byte[] image = Files.readAllBytes(imgPath.toPath());
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.IMAGE_JPEG);
headers.setContentLength(image.length);
return new ResponseEntity<>(image, headers, HttpStatus.OK);
}
Run Code Online (Sandbox Code Playgroud)
但是当我在浏览器中访问它时,它没有显示任何内容(只是没有图片图标).但是如果我读取图像字节数组,它就不是空的.我的代码中是否有任何遗漏?
我使用Spring Data JPA并使用多个数据库,所以我必须自己配置它而不是使用@HibernateJpaAutoConfiguration.
public class TesterDbConfig {
@Autowired(required = false)
private PersistenceUnitManager persistenceUnitManager;
@Bean
public JpaProperties testerJpaProperties() {
JpaProperties jpaProperties = new JpaProperties();
return jpaProperties;
}
@Bean
@Primary
@ConfigurationProperties(prefix = "datasource.primary")
public DataSource testerDataSource() {
return (DataSource) DataSourceBuilder.create().type(DataSource.class).build();
}
@Bean
public LocalContainerEntityManagerFactoryBean testerEntityManager(
JpaProperties testerJpaProperties) {
EntityManagerFactoryBuilder builder = createEntityManagerFactoryBuilder(testerJpaProperties);
return builder.dataSource(testerDataSource()).packages(Cabang.class).persistenceUnit("primary")
.build();
}
@Bean
public JpaTransactionManager testerTransactionManager(EntityManagerFactory testerEntityManager) {
return new JpaTransactionManager(testerEntityManager);
}
private EntityManagerFactoryBuilder createEntityManagerFactoryBuilder(
JpaProperties testerJpaProperties) {
JpaVendorAdapter jpaVendorAdapter = createJpaVendorAdapter(testerJpaProperties);
return new EntityManagerFactoryBuilder(jpaVendorAdapter, testerJpaProperties, …Run Code Online (Sandbox Code Playgroud) 我使用 spring 批处理并实现了项目编写器侦听器。我的 Item Writer Listener 类是这样的
@Component
public class SomeItemWriterListener implements ItemWriteListener {
@Override
public void beforeWrite(List<Object> items) throws Exception {
System.out.println("get here1");
}
@Override
public void afterWrite(List<Object> items) throws Exception {
System.out.println("get here2");
}
@Override
public void onWriteError(List<Object> items, Exception ex) throws Exception {
System.out.println("get here3");
}
}
Run Code Online (Sandbox Code Playgroud)
然后我在我的步骤中使用 Java Config 配置它
@Autowired
private SomeItemWriterListener writerListener;
@Bean
public Step step(StepBuilderFactory stepBuilderFactory,
@Qualifier("itemReader")
ItemReader<SomeItem> reader) {
return stepBuilderFactory.get("step").listener(
writerListener).chunk(
chunkSize).reader(reader).processor(processor).writer(writer).build();
}
Run Code Online (Sandbox Code Playgroud)
但是,beforeWrite,afterWrite 不会被调用。当我添加一些错误时 onWriterError 也没有被调用。当我配置这个时,我错过了什么吗?
spring ×3
controller ×1
hibernate ×1
image ×1
java ×1
rest ×1
spring-batch ×1
spring-boot ×1
spring-rest ×1