Tag: spring

RestTemplate线程安全吗?

Spring RestTemplate是否是线程安全的? 那是 RestTemplate是多个连接可以安全共享的策略对象。 要么 RestTemplate是一个连接对象(如数据库连接),在使用时不能共享,并且需要为每个连接重新创build或合并。

用Spring注解实例化同一个类的多个bean

使用XMLconfiguration的Spring bean工厂,我可以轻松实例化具有不同参数的同一类的多个实例。 我怎样才能做同样的注释? 我想这样的东西: @Component(firstName="joe", lastName="smith") @Component(firstName="mary", lastName="Williams") public class Person { /* blah blah */ }

Spring Web MVC:请求参数和pathvariables使用相同的请求映射

有没有一种方式来expression,我的Spring Web MVC控制器方法应该通过请求交付一个ID作为URIpath的一部分匹配… @RequestMapping(method=RequestMethod.GET, value="campaigns/{id}") public String getCampaignDetails(Model model, @PathVariable("id") Long id) { …或者,如果客户端发送ID作为样式中的HTTP请求参数… @RequestMapping(method=RequestMethod.GET, value="campaigns") public String getCampaignDetails(Model model, @RequestParam("id") Long id) { 这在我看来是一个相当常见的真实世界的URLscheme,我不想添加重复的代码,但我还没有find答案。 任何build议非常欢迎。 编辑:事实certificate,目前似乎(与Spring MVC的= 3.0)无法实现这一点,见Javi的答案内的讨论。

在不使用XMLconfiguration的情况下初始化数据库,但使用@Configuration

我想知道如何初始化一个数据库,而不必创build一个XML文件。 我已经使用这种初始化工作正常,但在我目前的情况下,我不想创build一个XML: <jdbc:initialize-database data-source="dataSource"> <jdbc:script location="classpath:com/foo/sql/db-schema.sql"/> <jdbc:script location="classpath:com/foo/sql/db-test-data.sql"/> </jdbc:initialize-database> 我知道我可以创build一个embedded式数据库: EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder(); EmbeddedDatabase db = builder.setType(H2).addScript("my-schema.sql").addScript("my-test-data.sql").build(); 就我而言,数据库和模式是使用Liquibase创build的。 我只想用Spring和我的自定义数据集进行初始化,而不必每次都创build一个新的XML文件。 可能吗?

@GetMapping和@RequestMapping之间的区别(method = RequestMethod.GET)

@GetMapping和@RequestMapping(method = RequestMethod.GET)什么区别? 我在一些Spring Reactive示例中@GetMapping ,使用了@GetMapping而不是@RequestMapping

Spring ApplicationListener没有收到事件

我有以下ApplicationListener: package org.mycompany.listeners; import org.springframework.context.ApplicationListener; import org.springframework.context.event.ContextStartedEvent; public class MyApplicationListener implements ApplicationListener<ContextStartedEvent> { public MyApplicationListener() { super(); System.out.println("Application context listener is created!"); } /** * {@inheritDoc} */ public void onApplicationEvent(final ContextStartedEvent event) { System.out.println("Context '" + event.getApplicationContext().getDisplayName() + "' is started!"); } } 和下面的bean定义一样: <bean name="myApplicationListener" class="org.mycompany.listeners.MyApplicationListener" /> 我可以看到,bean是从构造函数打印的消息创build的,但是上下文启动事件从来没有收到。 我错过了什么?

Spring Rest模板使用导致EOFException

我在Android上使用Spring REST模板时收到java.io.EOFException 。 stacktrace的原因如下: Caused by: java.io.EOFException at libcore.io.Streams.readAsciiLine(Streams.java:203) at libcore.net.http.HttpEngine.readResponseHeaders(HttpEngine.java:560) at libcore.net.http.HttpEngine.readResponse(HttpEngine.java:813) at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:274) at libcore.net.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:486) at org.springframework.http.client.SimpleClientHttpResponse.getRawStatusCode(SimpleClientHttpResponse.java:49) at org.springframework.http.client.SimpleClientHttpResponse.getStatusCode(SimpleClientHttpResponse.java:55) at org.springframework.http.client.BufferingClientHttpResponseWrapper.getStatusCode(BufferingClientHttpResponseWrapper.java:47) at com.company.util.LoggingClientHttpRequestInterceptor.intercept(LoggingClientHttpRequestInterceptor.java:33) at org.springframework.http.client.InterceptingClientHttpRequest$RequestExecution.execute(InterceptingClientHttpRequest.java:81) at com.company.api.interceptor.AuthTokenInterceptor.intercept(AuthTokenInterceptor.java:51) at org.springframework.http.client.InterceptingClientHttpRequest$RequestExecution.execute(InterceptingClientHttpRequest.java:81) at org.springframework.http.client.InterceptingClientHttpRequest.executeInternal(InterceptingClientHttpRequest.java:67) at org.springframework.http.client.AbstractBufferingClientHttpRequest.executeInternal(AbstractBufferingClientHttpRequest.java:46) at org.springframework.http.client.AbstractClientHttpRequest.execute(AbstractClientHttpRequest.java:63) at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:475) … 14 more 另一个类似的堆栈跟踪: org.springframework.web.client.ResourceAccessException: I/O error: null; nested exception is java.io.EOFException at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:490) at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:438) […]

Spring @Async不工作

@Service -annotated类中的@Async方法不是asynchronous调用 – 它阻塞了线程。 我在我的configuration文件中有<task: annotation-driven /> ,并且对该方法的调用来自于类之外,所以代理应该被击中。 当我遍历代码时,代理确实被击中了,但是它似乎并没有到任何与任务执行器中运行相关的类中。 我已经在AsyncExecutionInterceptor放置了断点,并且它们永远不会被击中。 我已经debugging到AsyncAnnotationBeanPostProcessor并可以看到得到应用的build议。 这个服务被定义为一个接口(在@Async方法中注释的方法是很好的方法),实现的方法注解@Async 。 两者都没有标记@Transactional 。 任何想法可能出了什么问题? – = UPDATE = – 奇怪的是,它只在我的app-servlet.xml文件中有我的task XML元素,而不是在我的app-services.xml文件中,以及如果我从那里做服务的组件扫描。 通常我只有一个XML文件,其中只有控制器(并相应地限制组件扫描),另一个XML文件包含服务(同样,组件扫描受限制,使得它不会重新扫描其他加载的控制器文件)。 APP-servlet.xml中 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:webflow="http://www.springframework.org/schema/webflow-config" xmlns:task="http://www.springframework.org/schema/task" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd" > <task:annotation-driven executor="executor" /> <task:executor id="executor" pool-size="7"/> <!– Enable […]

如何使用Spring MVC正确logginghttp请求

你好我一直在试图找出通用的方式来logging我的应用程序中的http请求,到目前为止没有运气,这里是我如何处理现在的日志logging,即: @RequestMapping(value="register", method = RequestMethod.POST) @ResponseBody public String register(@RequestParam(value="param1",required=false) String param1, @RequestParam("param2") String param2, @RequestParam("param3") String param3, HttpServletRequest request){ long start = System.currentTimeMillis(); logger.info("!–REQUEST START–!"); logger.info("Request URL: " + request.getRequestURL().toString()); List<String> requestParameterNames = Collections.list((Enumeration<String>)request.getParameterNames()); logger.info("Parameter number: " + requestParameterNames.size()); for (String parameterName : requestParameterNames){ logger.info("Parameter name: " + parameterName + " – Parameter value: " […]

Spring bean的作用域:session和globalSession

在Spring框架中session和globalSession有什么区别? <bean id="exampleBean" class="com.test.baen.ExampleBean" scope="session"/> <bean id="exampleBean" class="com.test.baen.ExampleBean" scope="globalSession"/> 根据我的研究,两个都是在一个web感知的Spring ApplicationContext的上下文中有效的。 现在,会话bean作用域将一直保留到用户会话,但globalSession bean作用域是否可用于整个应用程序? 它是应用范围吗? 我无法理解术语“全球HTTP会话”; 它会在整个全球HTTP会话中使用吗?