Spring boot RestController не работает с ломбоком

Мое приложение использует весеннюю загрузку с ломбоком, когда я использую @Data, аннотация вызовет

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

Когда я пишу геттер и сеттер, он работает хорошо.
Пожалуйста, помогите мне, спасибо; Код:

@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;
    }

}

person user3172755    schedule 21.10.2016    source источник
comment
Это может быть связано с: stackoverflow.com/a/37842512/475116 Итак, вы уверены, что lombok правильно настроен? Похоже, не генерирует геттеры и сеттеры.   -  person Pau    schedule 21.10.2016
comment
По моему личному опыту, аннотация lombok Getters / Setters работает отлично, но с данными иногда возникают проблемы с ошибками, я бы посоветовал вам использовать Getter / Setter на уровне свойств.   -  person cralfaro    schedule 21.10.2016
comment
Спасибо за ответ, я решаю, это потому, что идея Intellij lombok плохо настроена   -  person user3172755    schedule 22.11.2016


Ответы (2)


По личному опыту, пробовал как и ваш.

это модель

Пакет 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: [email protected]
 * @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: [email protected]
 * @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

введите описание изображения здесь

Итак, я думаю, что ваш код правильный. Если вы все еще получаете ошибку, я предлагаю вам проверить среду вашего проекта.

person Hu Peng    schedule 08.11.2016

У меня была такая же проблема, и это то, что я сделал, чтобы исправить ее. Если вы использовали 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

скопируйте банку ломбока (как указано выше) в корневую папку вашего 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

Затем откройте командную строку из этого места [где вы сейчас скопировали банку ломбока] и выполните следующую команду java -jar lombok-1.16.20.jar (используйте версию ломбока, которую вы используете)

Вы получите всплывающее окно с запросом местоположения вашего eclipse или STS .exe. Укажите правильный путь и нажмите кнопку [Установить / Обновить].

ПРИМЕЧАНИЕ. ВО ВРЕМЯ ВЫШЕ ОПЕРАЦИИ STS / Eclipse должны были быть близко

Теперь откройте STS / Eclipse и очистите свои проекты. И ВСЕ ВАШИ проблемы с LOMBOK ДОЛЖНЫ БЫТЬ ИСПРАВЛЕНЫ.

НАДЕЮСЬ ЭТО ПОМОЖЕТ

person JACOB    schedule 06.10.2018