package test.service;
@Path("/test")
public class TestResource {
@Inject
private Query query;
@GET
public String test() {
return "found: " + query.toString();
}
}
package test.utils;
public class QueryFactory implements Factory<Query> {
@Inject
private UriInfo uriInfo;
@Override
public Query provide() {
Query query = new Query();
Iterator<String> it = uriInfo.getQueryParameters().keySet().iterator();
if(it.hasNext()) {
String key = it.next();
List<String> valueList = uriInfo.getQueryParameters().get(key);
String value;
if(valueList.isEmpty())
value = "no value";
else
value = valueList.get(0);
query.setKey(key);
query.setValue(value);
} else {
query.setKey("no query");
}
return query;
}
@Override
public void dispose(Query query) {
}
}
package test.config
@Configuration
@ComponentScan("test")
public class SpringConfiguration {
@Autowired
QueryFactory queryFactory;
@Bean
public Query query() throws Exception {
return queryFactory.getObject();
}
}
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<context-param>
<param-name>contextClass</param-name>
<param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
</context-param>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>test.config.SpringConfiguration</param-value>
</context-param>
更改TestResource
package test.service;
@Path("/test")
@Component
public class TestResource {
@Autowired
private Query query;
@GET
public String test() {
return "found: " + query.toString();
}
}
并向QueryFactory添加注释
@Component
@Scope("request")
public class QueryFactory implements FactoryBean<Query>
我理解使用请求范围需要RequestContextListener
。然而,当我运行它时,我得到一个异常,它告诉我
`java.lang.IllegalStateException: No thread-bound request found:`
我看不出哪里出了问题。你能给我指出这个配置应该如何正确地完成吗?
问题是您告诉Spring QueryFactory有一个请求范围
@Component
@Scope("request")
public class QueryFactory
因此,这个objec只存在于web请求的中间。但您试图在web请求之外使用它。
@Autowired
QueryFactory queryFactory;
您可以在异常中看到它
基于CGLIB的请求范围bean的堆栈跟踪() 基于JDK-Dynamic-Proxy-Interface的请求范围bean的堆栈跟踪()
问题内容: 我的网站上有视频倒带问题。 我想出了HTTP标头的问题。 我当前的控制器方法返回视频: 如何用字节范围支持重写以下代码? 聚苯乙烯 我看过以下示例http://balusc.blogspot.in/2009/02/fileservlet-supporting-resume- and.html 但是这段代码对我来说很难,我无法理解。我希望在春天mvc可以更简单地存在。 问题答案: 在回答
我正在从请求OAuth2.0令牌。我正在请求以下范围: 我正在尝试同时获得Microsoft Graph范围和Office 365范围,但它给了我: AADSTS70011:为输入参数“scope”提供的值无效。范围https://graph.microsoft.com/User.Read https://graph.microsoft.com/Calendars.Read.Shared脱机访问配
在我的Play(Java)框架项目中,我正在使用Guice进行依赖项注入,并且正在努力理解如何最好地将“会话”的概念与Guice和Play结合使用? 我知道Play是无状态的,除了可以在cookie中存储值之外,实际上没有会话的概念。我对Guice和Play的理解是,虽然Guice文档描述了支持不同的作用域(单例、会话、请求、无作用域),但因为我们正在用每个请求实例化一个新的注入器,所以仅适用于P
问题内容: 我正在尝试在Spring中建立一个请求范围的bean。 我已经成功设置好了,所以每个请求创建一次bean。现在,它需要访问HttpServletRequest对象。 由于该bean是每个请求创建一次的,所以我认为容器可以轻松地将请求对象注入到我的bean中。我怎样才能做到这一点 ? 问题答案: 可以将请求范围的Bean与请求对象自动连接。
我有一个web应用程序,它有一个Spring集成逻辑,在一个单独的线程中运行。问题是,在某个时候,我的Spring集成逻辑尝试使用请求范围的bean,然后我得到以下错误: 我有ContextLoaderListener设置: 我的作用域Bean是这样注释的(因为我听说代理我的Bean会有帮助): 我所做的可能吗?如果是,我在这里遗漏了什么?如果没有,关于我如何实现这一目标,还有其他建议吗?