我正在尝试配置Java 8
使用ContextResolver的原因是我需要格式化java。时间LocalDateTime转换为JSON。
我首先通过添加@JsonFormat在我的模型bean上尝试注释,
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DATE_FORMAT)
@DateTimeFormat(pattern=DATE_FORMAT)
@Column(name = "JOINING_DATE", nullable = false)
@Type(type="org.hibernate.type.LocalDateTimeType")
private LocalDateTime joiningDate;
并得到以下错误:
Java语言lang.NoSuchMethodError:com。fasterxml。杰克逊。数据类型。jsr310.ser。JSR310格式化序列化数据库。findFormatOverrides(Lcom/fasterxml/jackson/databind/SerializerProvider;Lcom/fasterxml/jackson/databind/BeanProperty;Ljava/lang/Class;)Lcom/fasterxml/jackson/annotation/JsonFormat$Value;
其次,我删除了@JsonFormat注释并尝试使用ContextResolver,
ObjectMapperContextResolver。Java语言
package com.jobs.spring.configuration;
import javax.ws.rs.ext.ContextResolver;
import javax.ws.rs.ext.Provider;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
@Provider
public class ObjectMapperContextResolver implements ContextResolver<ObjectMapper> {
private final ObjectMapper MAPPER;
public ObjectMapperContextResolver() {
MAPPER = new ObjectMapper();
MAPPER.registerModule(new JavaTimeModule());
MAPPER.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
}
@Override
public ObjectMapper getContext(Class<?> type) {
return MAPPER;
}
}
并得到以下错误:
[org.springframework.web.servlet.页面未找到](默认任务4)在DispatcherServlet中未找到带有URI[/jbosswildfly/雇员/列表]的HTTP请求的映射
请有人建议,我认为我的Spring配置可能不正确。
正如我所说,如果我不使用@JsonFormat注释或ContextResolver,我可以成功调用RESTful服务(但我需要格式化日期)。
谢谢你
我的配置如下:
pom.xml
.
.
.
<jackson.version>2.8.0</jackson.version>
.
.
.
<!-- JSON -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>${jackson.version}</version>
</dependency>
网状物xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
metadata-complete="false">
<servlet>
<servlet-name>rest</html" target="_blank">servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>rest</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
rest-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
<context:component-scan base-package="com.jobs.spring" />
<mvc:annotation-driven />
</beans>
Rest控制器
@CrossOrigin(origins = {"*"})
@RestController
@RequestMapping(EmployeeRESTService.BASE_URI)
public class EmployeeRESTService {
public static final String BASE_URI = "/employee";
@Autowired
private EmployeeService employeeService;
@RequestMapping(value = "/list", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public List<Employee> findAllEmployees() {
return employeeService.findAll();
}
@RequestMapping(value = "/save", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody String saveEmployee(@RequestBody Employee employee){
Long id = employeeService.save(employee);
return Long.toString(id);
}
}
解决了
通过添加以下类,它现在可以工作了:
package com.jobs.spring.configuration;
import java.text.SimpleDateFormat;
import java.util.List;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConverter;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
@EnableWebMvc
public class WebConfiguration extends WebMvcConfigurerAdapter {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
builder.indentOutput(true).dateFormat(new SimpleDateFormat("yyyy-MM-dd"));
converters.add(new MappingJackson2HttpMessageConverter(builder.build()));
converters.add(new MappingJackson2XmlHttpMessageConverter(builder.createXmlMapper(true).build()));
}
}
我只使用XML配置来创建MVCWeb应用程序(没有注释)。 现在我想用Spring创建一个RESTful web服务,但我找不到任何不使用注释的教程。 有没有办法只使用XML配置构建RESTful web服务 还是必须使用注释? 例如,您可以仅使用如下所示的XML配置来部署MVC模式的web应用程序。 然而,当我试图为URL映射一个方法时,我遇到了麻烦,例如HTTP方法:,URL:——这样我就可以
我正在用spring、springfox、jackson开发一个REST API,我的model类包含一个属性: 我在依赖项中包含了jackson-datatype-jsr310版本2.9.0.pr4,因此它的序列化和反序列化很好。但是我的swagger-ui现在显示了很多模型对象,比如、、等等,这非常混乱,因为zone ID是序列化为简单字符串的。生成的API规范中的情况相同。我如何防止大摇大摆
我试图使用Java配置创建一个Spring4 RESTFul服务,并将其部署到Tomcat。但我无法到达终点。我错过了什么?这就是我所拥有的。 我被派往Tomcat。Tomcat开始很好。我试着点击它http://localhost:8080/api/greetings,它给了我404。我错过了什么? 谢了!
我想在我的项目中使用Jackson的配置版本(忽略空值和snake_case,也使用一些自定义模块)。 在我的大型项目中,我无法让Spring MVC真正使用这个映射器。 如果我现在查看调试器中的值,它是。但是如果我让控制器运行,实际的响应是。 当我删除时,它就可以工作了。如何将配置的映射器与MVC一起使用,而不删除Web MVC的其余自动配置?
我想请您对此提供帮助,我在中配置了一个项目,以便使用和构建一个Restful Webservice来连接数据库。 问题是我不知道如何配置控制器来执行并返回。 我已经开发了数据访问层、服务和控制器,但我不知道如何配置项目来执行:例如。 web.xml 错误: org.springframework.beans.factory.NoSuchBeanDefinitionException:未找到依赖项得
我想从网站上下载一份PDF。PDF需要在代码中生成,我认为这是freemarker和像iText这样的PDF生成框架的组合。还有更好的办法吗? 然而,主要的问题是,我不知道如何允许用户通过Spring控制器下载文件?