Spring 4使用中碰到的问题

作者: JerryHouse 分类: java 发布时间: 2015-03-02 18:02 ė 6没有评论

Spring使我们构建web或者web服务的过程简单和迅速,在使用过程中,我也碰到了一些问题。

1. Spring将对象序列化为json后返回
下面的代码在使用Spring的3.x版本时是没有任何问题的,但是使用Spring 4会报406的错误,从网上的资料来看是因为Spring 4采用的jackson的版本有问题。

    @RequestMapping(value = "/isbn/{isbn}", method = RequestMethod.GET,
            produces = "application/json;charset=UTF-8")
    private Book getByIsbn(@PathVariable String isbn) {
        if(StringUtils.isBlank(isbn) || (isbn.length() != 10 && isbn.length() != 13))
        {
            return null;
        }
        Book book = isbn.length() == 10 ? bookService.getByIsbn10(isbn) : bookService.getByIsbn13(isbn);
        if(book == null) {
            book = externalBookService.getByIsbn10(isbn);
            bookService.create(book);
            book = isbn.length() == 10 ? bookService.getByIsbn10(isbn) : bookService.getByIsbn13(isbn);
        }
        return book;
    }

将jackson的maven依赖更改为:

      <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-core</artifactId>
          <version>2.2.3</version>
      </dependency>
      <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-databind</artifactId>
          <version>2.2.3</version>
      </dependency>
      <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-annotations</artifactId>
          <version>2.2.3</version>
      </dependency>

406的错误就解决了。

2. 没有web.xml时maven打包会失败
Spring 4提供两种方式进行配置:基于XML文件和基于Java注解。使用基于XML的方式进行配置时,web项目中会有web.xml配置文件,而基于Java注解时没有web.xml文件,此时用Maven打包会报错:Error assembling WAR: webxml attribute is required。解决的办法是告诉Maven该项目是没有web.xml配置文件的,配置如下:

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>
        </plugins>
    </build>

3. 错误处理
Spring在数据绑定时可能会产生错误,为了看到详细的错误信息需要进行如下配置。

    @ExceptionHandler(Exception.class)
    public ResponseEntity<String> handleIOException(Exception ex) {
        ResponseEntity<String> responseEntity = new ResponseEntity<String>(ex.toString(), HttpStatus.BAD_REQUEST);
        ex.printStackTrace();
        return responseEntity;
    }

本文出自 dcharm,转载时请注明出处及相应链接。

本文永久链接: http://www.dcharm.com/?p=277

发表评论

Ɣ回顶部