我们使用Spring Boot / MVC和基于注解的java-config来实现一系列RESTful服务,并且我们希望在某些API响应上select性地启用HTTP GZIPstream压缩。 我知道我可以在我的控制器和byte[] @ResponseBody手动执行此操作,但是我们更愿意依靠SpringMVC基础结构(filter/ etc),并自动执行JSON转换和压缩(即方法返回一个POJO)。 如何在ResponseBody或embedded式Tomcat实例中启用GZIP压缩,并以某种方式select性压缩一些响应? 谢谢! PS .:我们目前没有任何基于XML的configuration。
使用Spring的Javaconfiguration,我需要获取/实例化一个原型范围的bean,它具有只能在运行时获得的构造函数参数。 考虑下面的代码示例(简洁起见): @Autowired private ApplicationContext appCtx; public void onRequest(Request request) { //request is already validated String name = request.getParameter("name"); Thing thing = appCtx.getBean(Thing.class, name); //System.out.println(thing.getName()); //prints name } Thing类定义如下: public class Thing { private final String name; @Autowired private SomeComponent someComponent; @Autowired private AnotherComponent anotherComponent; public Thing(String name) { this.name = name; } public String […]
我是Spring MVC框架的新手,我有一个我自己无法解决的问题。 一切都从我的应用程序集成Spring安全性开始,之后,所有来自HTML表单的unicode值都没有被编码(spring安全工作正常)。 我得出的结论是,这可能是因为我的DelegatingFilterProxy被称为链中的第一个filter。 这是我认为会起作用的configuration,但它不是: 1)我正在扩展AbstractSecurityWebApplicationInitializer – 从javadoc: Registers the DelegatingFilterProxy to use the springSecurityFilterChain() before any other registered Filter. 从那个类我也覆盖Spring关于javadoc的SpringSecurityFilterChain方法: Invoked before the springSecurityFilterChain is added. 所以我认为这将是注册CharacterEncodingFilter的最佳地点: public class MessageSecurityWebApplicationInitializer extends AbstractSecurityWebApplicationInitializer { @Override protected void beforeSpringSecurityFilterChain(ServletContext servletContext) { FilterRegistration.Dynamic characterEncodingFilter = servletContext.addFilter("encodingFilter", new CharacterEncodingFilter()); characterEncodingFilter.setInitParameter("encoding", "UTF-8"); characterEncodingFilter.setInitParameter("forceEncoding", "true"); characterEncodingFilter.addMappingForUrlPatterns(null, true, "/*"); } } […]