File tree Expand file tree Collapse file tree
examples/simple-springboot
src/main/java/org/mapstruct/extensions/spring/example/boot Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ plugins {
2+ id " org.springframework.boot" version " 2.4.4"
3+ id " io.spring.dependency-management" version " 1.0.11.RELEASE"
4+ }
5+
6+ dependencies {
7+ annotationProcessor project(" :extensions" )
8+ implementation project(" :examples:model" )
9+ implementation project(" :annotations" )
10+
11+ implementation ' org.mapstruct:mapstruct:1.4.0.Final'
12+ annotationProcessor ' org.mapstruct:mapstruct-processor:1.4.0.Final'
13+ implementation ' org.springframework.boot:spring-boot-starter'
14+ }
Original file line number Diff line number Diff line change 1+ package org .mapstruct .extensions .spring .example .boot ;
2+
3+ import org .mapstruct .extensions .spring .converter .ConversionServiceAdapter ;
4+ import org .mapstruct .extensions .spring .example .Car ;
5+ import org .mapstruct .extensions .spring .example .CarDto ;
6+ import org .mapstruct .extensions .spring .example .SeatConfiguration ;
7+ import org .mapstruct .extensions .spring .example .SeatMaterial ;
8+ import org .slf4j .Logger ;
9+ import org .slf4j .LoggerFactory ;
10+ import org .springframework .boot .CommandLineRunner ;
11+ import org .springframework .boot .SpringApplication ;
12+ import org .springframework .boot .autoconfigure .SpringBootApplication ;
13+ import org .springframework .context .ApplicationContext ;
14+ import org .springframework .context .annotation .Bean ;
15+
16+ @ SpringBootApplication
17+ public class Start {
18+ public static void main (String [] args ) {
19+ SpringApplication .run (Start .class , args );
20+ }
21+
22+ private static final Logger log = LoggerFactory .getLogger (Start .class );
23+
24+ @ Bean
25+ public CommandLineRunner commandLineRunner (ApplicationContext ctx , ConversionServiceAdapter adapter ) {
26+ return args -> {
27+ final SeatConfiguration seatConf = new SeatConfiguration ();
28+ seatConf .setSeatMaterial (SeatMaterial .FABRIC );
29+ final Car car = new Car ();
30+ car .setMake ("make" );
31+ car .setSeatConfiguration (seatConf );
32+
33+ log .info ("map start" );
34+ final CarDto carDto = adapter .mapCarToCarDto (car );
35+ log .info (carDto .toString ());
36+ };
37+ }
38+ }
Original file line number Diff line number Diff line change 1+ package org .mapstruct .extensions .spring .example .boot .config ;
2+
3+ import org .slf4j .LoggerFactory ;
4+ import org .springframework .beans .factory .ListableBeanFactory ;
5+ import org .springframework .boot .convert .ApplicationConversionService ;
6+ import org .springframework .context .annotation .Bean ;
7+ import org .springframework .context .annotation .Configuration ;
8+ import org .springframework .core .convert .ConversionService ;
9+ import org .springframework .core .convert .converter .Converter ;
10+ import org .springframework .format .support .DefaultFormattingConversionService ;
11+ import org .springframework .format .support .FormattingConversionService ;
12+
13+ @ Configuration
14+ public class ConverterConfig {
15+ private final ListableBeanFactory beanFactory ;
16+
17+ public ConverterConfig (ListableBeanFactory beanFactory ) {
18+ this .beanFactory = beanFactory ;
19+ }
20+
21+ /**
22+ * without spring-boot-starter-web, no custom mappers will be added automatically;
23+ * register manually we register manually all our {@link Converter}
24+ */
25+ @ Bean
26+ public ConversionService conversionService () {
27+ LoggerFactory .getLogger (ConverterConfig .class ).info ("ConversionService bean init" );
28+ final FormattingConversionService service = new DefaultFormattingConversionService ();
29+ ApplicationConversionService .addBeans (service , this .beanFactory );
30+ return service ;
31+ }
32+ }
Original file line number Diff line number Diff line change 1+ package org .mapstruct .extensions .spring .example .boot .mappers ;
2+
3+ import org .mapstruct .Mapper ;
4+ import org .mapstruct .Mapping ;
5+ import org .mapstruct .extensions .spring .example .Car ;
6+ import org .mapstruct .extensions .spring .example .CarDto ;
7+ import org .springframework .core .convert .converter .Converter ;
8+
9+ @ Mapper (config = MapperSpringConfig .class )
10+ public interface CarMapper extends Converter <Car , CarDto > {
11+ @ Mapping (target = "seats" , source = "seatConfiguration" )
12+ CarDto convert (Car car );
13+ }
Original file line number Diff line number Diff line change 1+ package org .mapstruct .extensions .spring .example .boot .mappers ;
2+
3+ import org .mapstruct .MapperConfig ;
4+ import org .mapstruct .extensions .spring .converter .ConversionServiceAdapter ;
5+
6+ @ MapperConfig (componentModel = "spring" , uses = ConversionServiceAdapter .class )
7+ public interface MapperSpringConfig {
8+ }
Original file line number Diff line number Diff line change 1+ package org .mapstruct .extensions .spring .example .boot .mappers ;
2+
3+ import org .mapstruct .Mapper ;
4+ import org .mapstruct .Mapping ;
5+ import org .mapstruct .extensions .spring .example .SeatConfiguration ;
6+ import org .mapstruct .extensions .spring .example .SeatConfigurationDto ;
7+ import org .springframework .core .convert .converter .Converter ;
8+
9+ @ Mapper (config = MapperSpringConfig .class )
10+ public interface SeatConfigurationMapper extends Converter <SeatConfiguration , SeatConfigurationDto > {
11+ @ Mapping (target = "seatCount" , source = "numberOfSeats" )
12+ @ Mapping (target = "material" , source = "seatMaterial" )
13+ SeatConfigurationDto convert (SeatConfiguration seatConfiguration );
14+ }
Original file line number Diff line number Diff line change 1+ package org .mapstruct .extensions .spring .example .boot .mappers ;
2+
3+ import org .mapstruct .Mapper ;
4+ import org .mapstruct .extensions .spring .example .Wheel ;
5+ import org .mapstruct .extensions .spring .example .WheelDto ;
6+ import org .mapstruct .extensions .spring .example .boot .mappers .MapperSpringConfig ;
7+ import org .springframework .core .convert .converter .Converter ;
8+
9+ @ Mapper (config = MapperSpringConfig .class )
10+ public interface WheelMapper extends Converter <Wheel , WheelDto > {
11+ @ Override
12+ WheelDto convert (Wheel source );
13+ }
Original file line number Diff line number Diff line change 1+ package org .mapstruct .extensions .spring .example .boot .mappers ;
2+
3+ import org .mapstruct .Mapper ;
4+ import org .mapstruct .extensions .spring .example .WheelDto ;
5+ import org .mapstruct .extensions .spring .example .Wheels ;
6+ import org .mapstruct .extensions .spring .example .boot .mappers .MapperSpringConfig ;
7+ import org .springframework .core .convert .converter .Converter ;
8+
9+ import java .util .List ;
10+
11+ @ Mapper (config = MapperSpringConfig .class )
12+ public interface WheelsDtoListMapper extends Converter <List <WheelDto >, Wheels > {
13+ @ Override
14+ Wheels convert (List <WheelDto > source );
15+ }
Original file line number Diff line number Diff line change 1+ package org .mapstruct .extensions .spring .example .boot .mappers ;
2+
3+ import org .mapstruct .Mapper ;
4+ import org .mapstruct .extensions .spring .example .Wheel ;
5+ import org .mapstruct .extensions .spring .example .WheelDto ;
6+ import org .mapstruct .extensions .spring .example .Wheels ;
7+ import org .mapstruct .extensions .spring .example .boot .mappers .MapperSpringConfig ;
8+ import org .springframework .core .convert .converter .Converter ;
9+
10+ import java .util .List ;
11+
12+ @ Mapper (config = MapperSpringConfig .class , imports = Wheel .class )
13+ public interface WheelsMapper extends Converter <Wheels , List <WheelDto >> {
14+ @ Override
15+ List <WheelDto > convert (Wheels source );
16+ }
Original file line number Diff line number Diff line change @@ -9,4 +9,6 @@ include "examples:packagename"
99include " examples:classname"
1010include " examples:packagename-and-classname"
1111include " examples:custom-conversion-service-bean"
12+ include " examples:simple-springboot"
1213include " docs"
14+
You can’t perform that action at this time.
0 commit comments