我们可以配置Spring根据请求的范围来配置属性吗?
我可以通过在请求中添加一个属性“isHttps”来配置 Spring,并且可以从代码中的任何位置访问该属性,例如 bean 类:
public class MyItem{
public String getImageUrl(){
if (isHttps){
//return https url
}
//return http url;
}
}
我可以使用 ThreadLocal 来执行此操作,但我想避免走那条路。
Can I configure Spring in such a way that I add a property, "isHttps" to the request, and this property can be accessed from anywhere in the code, e.g. a bean class:
public class MyItem{
public String getImageUrl(){
if (isHttps){
//return https url
}
//return http url;
}
}
I can do this using ThreadLocal, but I would like to avoid taking that route.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
另一种选择:
您可以按如下方式获取当前请求:
这在幕后使用线程本地。
如果您使用 Spring MVC,这就是您所需要的。如果您没有使用 Spring MVC,那么您将需要注册 RequestContextListener 或 RequestContextFilter 在您的
web.xml
。Another alternative:
You can get the current request as follows:
This uses thread-local under the covers.
If you are using Spring MVC that's all you need. If you are not using Spring MVC then you will need to register a RequestContextListener or RequestContextFilter in your
web.xml
.创建一个请求范围的 bean
然后在该类中,自动装配请求(参考 这里):
在RequestBean中添加一个方法来判断请求是否是HTTPS。
然后将 requestBean 注入到需要调用 isHttp() 的其他 bean 中。
Create a request-scoped bean
Then in that class, autowire the request (reference here):
Add a method in RequestBean that determines if the request is HTTPS.
Then inject requestBean into your other beans that need to call isHttp().