簡體   English   中英

Spring Boot-Gson Singleton?

[英]Spring boot - gson singleton?

我的應用程序當前運行Gson而不是jackson,如何使用gson解析傳入的表單提交?

我目前得到

2015-10-26 14:14:59.027錯誤12876-[nio-8080-exec-1] com.exp.controllers.UserController:Bean對象不能為null; 嵌套異常為java.lang.IllegalArgumentException:Bean對象不能為null

@RestController
public class UserController {

    @Autowired
    private UserDao userDao;

    @Autowired
    private GsonHttp gsonHttp;

    private final Logger log = LoggerFactory.getLogger(this.getClass());

  @RequestMapping(value="/createPOST", method = RequestMethod.POST)
  @ResponseBody
  public ResponseData createPOST(String json) {
    User user = null;
    try {
      user = gsonHttp.getGson().fromJson(json, User.class);
      userDao.save(user);
    }
    catch (Exception ex) {
        log.error(ex.getMessage());
        return new ResponseData(false, Arrays.asList("Error with user creation."));
    }
    return new ResponseData(true, Arrays.asList(user));
  }
}

有了這個:

@Repository
public class GsonHttp {

    private Gson gson;

    public GsonHttp(){
        this.gson = new Gson();
    }

    public Gson getGson() {
        return gson;
    }

    public void setGson(Gson gson) {
        this.gson = gson;
    }

}

當您嘗試保存空對象時,存儲庫將引發“ Bean對象不能為空”。

userDao.save(user) //User is null

您的對象為null的原因是因為您不添加@RequestBody就無法獲取json,因此請更改json參數以具有此批注

public String createPost(@RequestBody String json) { //Added @RequestBody

在Spring Boot中設置GSON

正如您所解釋的,默認情況下,傑克遜是默認解析器,用GSON替換它很容易。

SRC /主/資源/ application.properties

spring.http.converters.preferred-JSON-mapper.gson =真

這顯然需要在類路徑上使用GSON。

然后這樣重寫您的create post方法

  @RequestMapping(value="/createPOST", method = RequestMethod.POST)
  @ResponseBody
  public ResponseData createPOST(@RequestBody User user) {
    userDao.save(user);
    return new ResponseData(true, Arrays.asList(user));
  }

基本HTTPMessageConverterClass- https://github.com/spring-projects/spring-boot/blob/master/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/HttpMessageConvertersAutoConfiguration.java

-

Gson特定配置-https: //github.com/spring-projects/spring-boot/blob/master/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/GsonHttpMessageConvertersConfiguration.java

確保特別注意最后一個來源中的PreferGsonOrMissingJacksonCondition類。 如果將gson配置為首選,或者如果Gson在類路徑上而傑克遜不在,則使用GSON(例如,將其從Maven或Gradle中排除)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM