spring 启动 RestController 不适用于 lombok

spring boot RestController not work with lombok

我的应用程序使用 spring 使用 lombok 启动,当我使用 @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;
    }

}

我个人的经验,我跟你一样试过了。

这是模型

``` 包裹 info.xiaomo.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

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

我遇到了同样的问题,这就是我纠正它的方法 如果你像我使用下面的那样使用 maven 下载 lombok 依赖项 依赖性

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

去你本地的maven仓库 例如对我来说:@ C:\Users.m2\repository\org\projectlombok\lombok.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 版本)

你会得到一个弹出窗口 询问您的 eclipse 或 STS .exe 的位置,给出正确的路径 然后点击 [Install/Update] 按钮

注意:在上述所有操作期间,STS/Eclipse 应该关闭

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

希望这对您有所帮助