Шаблон проектирования Builder для конечной точки API Spring BootJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Шаблон проектирования Builder для конечной точки API Spring Boot

Сообщение Anonymous »

Я попытался использовать шаблон проектирования построитель для класса модели. Мне нужно иметь несколько обязательных файлов и несколько необязательных полей; этот дизайн может помочь мне в этом сценарии. Я использую Spring Boot и Java 22 и создал класс модели для одной из конечных точек. Я также включил импорт и удалил много ненужного кода, поскольку фокус — это поле приоритета. Это класс:

Код: Выделить всё

import java.sql.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Objects;
import java.util.Optional;

public class ConfigRequestModel {
private String id;
//other mandatory fields
private Optional priority;
// other optional fields

public ConfigRequestModel(){}

public ConfigRequestModel(ConfigRequestModelBuilder builder) {
this.id = builder.id;
//other mandatory and optional fields
this.priority = builder.priority;
}

public static class ConfigRequestModelBuilder{
private final String id;
//other mandatory and optional fields
private Optional priority;

public ConfigRequestModelBuilder(String id,
//other mandatory fields) {
//mandatory fields

}

public void map(HashMap map) {
if(frequency.isEmpty()){
this.map = new HashMap();
}else {
this.map = map;
}
}

public void setPriority(Optional priority) {

this.priority = priority.isPresent() ? priority : Optional.empty();

//            if (priority.isPresent()) {
//                this.priority = Optional.empty();
//            }else {
//                this.priority = priority;
//            }
}

public void date(Optional date) {
if (date.isPresent()){
this.date = Optional.empty();
}else {
this.date = date;
}
}
//rest of the setters

public String id() {
return id;
}
// rest of the getters
//equals
//hashCode
//toString
Вот как я использую приоритет:

Код: Выделить всё

if (configRequestModel.getPriority().isEmpty())
Я получил эту ошибку:

Код: Выделить всё

Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: java.lang.NullPointerException: Cannot invoke "java.util.Optional.isEmpty()" because the return value of "com.upload_manager.UploadManager.model.uploadManager.ConfigRequestModel.getPriority()" is null] with root cause
Это странно, потому что Джексон должен вызывать построитель по умолчанию, поскольку я читал, что он может обнаруживать эти шаблоны. Более того, Priority.isPresent() должен работать и поставить необязательный.empty(), а не null.
Если у вас есть какие-либо предложения, пожалуйста, не стесняйтесь поделиться ими.

Подробнее здесь: https://stackoverflow.com/questions/788 ... pring-boot
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»