我有一个带有启动代码生成器的spring-boot应用程序。由于控制器是从摇摇欲坠的Yaml自动生成的,因此我认为我无法修改控制器以访问HttpServletResponse
。
是否可以从带有HttpServletResponse
注释的类中访问@Component
?
我试图访问HttpServletResponse
实例以设置cookie。
答案 0 :(得分:3)
如果您根本不想触摸控制器,那就是将bean变成spring filter bean。本文为您提供了如何声明此类bean的详细信息。声明后,您需要将其绑定到指向控制器方法的url。
https://www.baeldung.com/spring-boot-add-filter
这取决于您的最终目标。
答案 1 :(得分:0)
Spring 提供了静态类 (ServletRequestAttributes),您可以使用它从应用程序的任何位置访问请求/响应:
public void method() {
ServletRequestAttributes ra = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
if (ra != null) {
HttpServletRequest request = ra.getRequest();
HttpServletResponse response = ra.getResponse();
}
}
<块引用>
ra.getRequest() 如果请求已经被处理将返回 null