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 的问题都应该得到纠正
希望这对您有所帮助
我的应用程序使用 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 的问题都应该得到纠正
希望这对您有所帮助