我想知道Sprin MVC控制器方法返回字节数组byte[]表示下载的文件时还是将InputStream对象复制到ServletOutputStream对象时是否存在真正的区别?
我要问的原因是我必须确保下载大文件时不会出现OutOfMemory错误。将通过ServletOutputStream帮助的传递文件避免了吗?
传递字节数组:
byte[] download() {
return getUrlContentAsByteArray();
}
Run Code Online (Sandbox Code Playgroud)
传递ServletOutputStream:
void download(HttpServletResponse response) {
InputStream content = getUrlContentAsStream();
ServletOutputStream outputStream = response.getOutputStream();
response.reset();response.setContentType(ContentType.APPLICATION_OCTET_STREAM.getMimeType());
IOUtils.copyLarge(inputStream, outputStream);
}
Run Code Online (Sandbox Code Playgroud) 我有两种类型的豆子InterfaceA.我试图将bean注入到@Bean使用@Qualifier按名称自动装配的方法的参数中.令我惊讶的是,除非你的参数名称与bean名称匹配,否则Spring无法解析正确的bean.
我在努力:
@Component
public class ClassA implements InterfaceA {
}
@Component
public class ClassB implements InterfaceA {
}
@Configuration
public class AppConfig {
@Bean
@Autowired
@Qualifier("classA")
public SomeOtherClass someOtherClass(InterfaceA object) {...}
}
Run Code Online (Sandbox Code Playgroud)
但得到了NoUniqueBeanDefinitionException.但是,如果我使用参数名称匹配组件名称,它可以正常工作.
@Configuration
public class AppConfig {
@Bean
@Autowired
public SomeOtherClass someOtherClass(InterfaceA classA) {...}
}
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么我不能使用名称@Resource或@Qualifier在这里使用自动装配?