Мой преобразователь MapStruct не работает. По какой-то причине геттеры/сеттеры не включены в тела методов сопоставителя (реализация сопоставителя создается). Он просто вызывает аргументы без аргументов и возвращает результат.
Возможно, это связано с тем, что Mapstruct по какой-то причине не видит сгенерированные методы получения/установки – даже несмотря на то, что зависимость привязки существует.< /p>
Мне нужно, чтобы мои сопоставители были @Component в производстве, поэтому я установил для компонентаComponentModel значение Spring.
Вот MRE (и неудавшийся тест)
package com.example.demo.data;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class Cat {
private String name;
}
package com.example.demo.data;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class CatDto {
private String name;
}
package com.example.demo.mapper;
import com.example.demo.data.Cat;
import com.example.demo.data.CatDto;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring")
public interface CatMapper {
Cat toCat(CatDto cat);
}
4.0.0
org.springframework.boot
spring-boot-starter-parent
3.3.5
com.example
demo
0.0.1-SNAPSHOT
demo
Demo project for MapStruct
17
1.6.3
org.springframework.boot
spring-boot-starter
org.projectlombok
lombok
true
org.mapstruct
mapstruct
${mapstruct.version}
org.projectlombok
lombok-mapstruct-binding
0.2.0
org.springframework.boot
spring-boot-starter-test
test
org.apache.maven.plugins
maven-compiler-plugin
org.mapstruct
mapstruct-processor
${mapstruct.version}
org.projectlombok
lombok
${lombok.version}
org.springframework.boot
spring-boot-maven-plugin
package com.example.demo;
import com.example.demo.data.Cat;
import com.example.demo.data.CatDto;
import com.example.demo.mapper.CatMapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import static org.junit.jupiter.api.Assertions.assertEquals;
@SpringBootTest
class DemoApplicationTests {
@Autowired
private CatMapper catMapper;
@Test
void contextLoads() {
CatDto catDto = new CatDto();
catDto.setName("Kitty");
Cat cat = catMapper.toCat(catDto);
assertEquals(catDto.getName(), cat.getName()); // fails: expected "Kitty", actual null
}
}
Полная реализация MapStruct:
package com.example.demo.mapper;
import com.example.demo.data.Cat;
import com.example.demo.data.CatDto;
import javax.annotation.processing.Generated;
import org.springframework.stereotype.Component;
@Generated(
value = "org.mapstruct.ap.MappingProcessor",
date = "2024-11-14T19:21:15+0300",
comments = "version: 1.6.3, compiler: javac, environment: Java 17.0.13 (Amazon.com Inc.)"
)
@Component
public class CatMapperImpl implements CatMapper {
@Override
public Cat toCat(CatDto cat) {
if ( cat == null ) {
return null;
}
Cat cat1 = new Cat();
return cat1;
}
@Override
public CatDto toDto(Cat cat) {
if ( cat == null ) {
return null;
}
CatDto catDto = new CatDto();
return catDto;
}
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... properties
Созданный MapStruct преобразователь не отображает никаких свойств. ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как использовать правильный преобразователь Mapstruct на основе ввода в Springboot?
Anonymous » » в форуме JAVA - 0 Ответы
- 25 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Копирование свойств из одного универсального класса в другой через преобразователь значений.
Anonymous » » в форуме C# - 0 Ответы
- 19 Просмотры
-
Последнее сообщение Anonymous
-