1.1.60. fejezet, MapStruct
Beküldte pzoli - 2025, július 1 - 10:41de
Kapcsolódó hivatkozások
- mapstruct.org
- Kafka Avro producer (github)
build.gradle
dependencies { implementation "org.mapstruct:mapstruct:1.6.3" annotationProcessor "org.projectlombok:lombok-mapstruct-binding:0.2.0" ... annotationProcessor "org.mapstruct:mapstruct-processor:1.6.3" ... testImplementation "org.mapstruct:mapstruct:1.6.3" testAnnotationProcessor "org.mapstruct:mapstruct-processor:1.6.3" }
Minta Mapper
package hu.infokristaly.kafkaproducer; import hu.infokristaly.kafkaconsumer.avro.User; import org.mapstruct.Mapper; import org.mapstruct.Mapping; @Mapper(componentModel = "spring", uses = {}) public interface UserMapper { @Mapping(target = "name", source = "name") @Mapping(target = "favoriteNumber", source = "favoriteNumber") @Mapping(target = "favoriteColor", source = "favoriteColor") User from(UserDTO userDTO); }
Teszt minta
package hu.infokristaly.kafkaproducer; import hu.infokristaly.kafkaconsumer.avro.User; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.annotation.ComponentScan; import org.springframework.test.context.ActiveProfiles; @SpringBootTest @ComponentScan(basePackages = "hu.infokristaly.kafkaproducer") @ActiveProfiles("test") class KafkaproducerApplicationTests { @Autowired private UserMapper userMapper; @Test void contextLoads() { assert userMapper != null; UserDTO userDTO = new UserDTO(); userDTO.setName("Teszt Elek"); userDTO.setFavoriteColor("piros"); userDTO.setFavoriteNumber(13); User user = userMapper.from(userDTO); assert user.getName().equals(userDTO.getName()) : "The name doesn't equal"; assert user.getFavoriteColor().equals(userDTO.getFavoriteColor()) : "The favourite color doesn't match"; assert user.getFavoriteNumber() == userDTO.getFavoriteNumber() : "The favourite number doesn't match"; } }
Ne felejtsük el a test/resources mappát létrehozni, és ide elhelyezni az application-test.properties állományt (amiben ne legyen környezeti változóra hivatkozás), különben valami hasonló üzenetet kapunk:
KafkaproducerApplicationTests > contextLoads() FAILED java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:180 Caused by: org.springframework.beans.factory.BeanCreationException at AutowiredAnnotationBeanPostProcessor.java:515 Caused by: org.springframework.util.PlaceholderResolutionException at PlaceholderResolutionException.java:81
Kafka Avro consumer application-test.properties
spring.kafka.bootstrap-servers=localhost:9092 spring.kafka.properties.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username='user1' password='test123'; spring.kafka.properties.sasl.mechanism=PLAIN spring.kafka.properties.security.protocol=SASL_PLAINTEXT spring.kafka.producer.acks=all avro.schema_registry.url=http://localhost:8081
- A hozzászóláshoz be kell jelentkezni