spring boot RestController不能与lombok一起使用

时间:2016-10-21 06:29:08

标签: spring-boot lombok spring-restcontroller

我的应用程序使用带有lombok的spring boot,当我使用@Data annation将导致

java.lang.IllegalArgumentException: No converter found for return value of type.

当我明确写出getter和setter时,它运作良好 请帮帮我,谢谢;代码:

@RestController
@RequestMapping("/user")
public class UserController {

    @GetMapping("/{id}")
    public User query(@PathVariable long id) {
        if (id == 1L) {
            return new User(1l);
        } else {
            return new User(2L);
        }
    }

}

@Data
public class User {
    private long userId;
    private String userName;
    private String password;
    private String mobile;
    private String address;

    public User() {
    }
    public User(long userId){
        this(userId, "zhengfc", "pwd", "13322222222", "shanghai-zhengjiang");
    }
    public User(long userId, String userName, String password, String mobile, String address) {
        this.userId = userId;
        this.userName = userName;
        this.password = password;
        this.mobile = mobile;
        this.address = address;
    }

}

2 个答案:

答案 0 :(得分:0)

就我个人而言,我尝试过像你一样。

这是模型

```     包info.giaomo.website.controller;

import lombok.Data;

/**
 * 把今天最好的表现当作明天最新的起点..~
 * いま 最高の表現 として 明日最新の始発..~
 * Today the best performance  as tomorrow newest starter!
 * Created by IntelliJ IDEA.
 *
 * @author: xiaomo
 * @github: https://github.com/qq83387856
 * @email: hupengbest@163.com
 * @QQ_NO: 83387856
 * @Date: 2016/11/8 10:29
 * @Description: 用户实体类
 * @Copyright(©) 2015 by xiaomo.
 **/

@Data
public class Test {
    private long userId;
    private String userName;
    private String password;
    private String mobile;
    private String address;

    public Test() {
    }
    public Test(long userId){
        this(userId, "zhengfc", "pwd", "13322222222", "shanghai-zhengjiang");
    }
    public Test(long userId, String userName, String password, String mobile, String address) {
        this.userId = userId;
        this.userName = userName;
        this.password = password;
        this.mobile = mobile;
        this.address = address;
    }

}

```

这是控制器

```

package info.xiaomo.website.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 把今天最好的表现当作明天最新的起点..~
 * いま 最高の表現 として 明日最新の始発..~
 * Today the best performance  as tomorrow newest starter!
 * Created by IntelliJ IDEA.
 *
 * @author: xiaomo
 * @github: https://github.com/qq83387856
 * @email: hupengbest@163.com
 * @QQ_NO: 83387856
 * @Date: 2016/11/8 10:29
 * @Description: 用户实体类
 * @Copyright(©) 2015 by xiaomo.
 **/

@RestController
@RequestMapping("/test")
public class TestController {


    @GetMapping("/{id}")
    public Test query(@PathVariable long id) {
        if (id == 1L) {
            return new Test(1l);
        } else {
            return new Test(2L);
        }

    }
}

```

我运行服务器,http://localhost:8080/test/1

enter image description here

所以,我认为你的代码是正确的。如果你仍然得到错误,我建议你需要检查你的项目环境。

答案 1 :(得分:0)

我遇到了同样的问题,这就是我所做的纠正措施 如果您像我使用下面那样使用maven下载lombok依赖项 依赖

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.20</version>
</dependency>

转到本地的Maven存储库 例如对于我来说:@ C:\ Users.m2 \ repository \ org \ projectlombok \ lombok \ 1.16.20 \ lombok-1.16.20.jar

将lombok jar(如上所述)复制到STS或Eclipse的根文件夹中 我(我使用STS)复制到D:\ Public \ software_executables \ STS \ spring-tool-suite-3.9.5.RELEASE-e4.8.0-win32-x86_64 \ sts-bundle \ sts-3.9.5.RELEASE

然后从该位置打开命令提示符[您现在已复制lombok jar的位置] 并运行以下命令java -jar lombok-1.16.20.jar(使用您使用的lombok版本)

您将弹出一个弹出窗口 询问日食或STS .exe的位置,请提供正确的路径 然后点击[安装/更新]按钮

注意:在上述所有操作中,STS / Eclipse应该已经关闭

现在打开STS / Eclipse并清理您的项目 并且所有关于LOMBOK的问题都应该得到纠正

希望有帮助