---
title: Quick Start
order: 3
category:
- Introduction
description: MapStructPlus 快速开始教程 quick start
---
The following shows how to convert two objects using MapStructPlus.
Suppose there are two classes, `UserDto` and `User`, representing the data-layer object and business-layer object, respectively:
- `UserDto`
```java
public class UserDto {
private String username;
private int age;
private boolean young;
// getter、setter、toString、equals、hashCode
}
```
- `User`
```java
public class User {
private String username;
private int age;
private boolean young;
// getter、setter、toString、equals、hashCode
}
```
## Non-SpringBoot environment
### add dependencies
Introducing `mapstruct-plus` dependencies:
#### Maven
```xml
latest version
io.github.linpeilie
mapstruct-plus
{mapstruct-plus.version}
org.apache.maven.plugins
maven-compiler-plugin
3.8.1
1.8
1.8
io.github.linpeilie
mapstruct-plus-processor
${mapstruct-plus.version}
```
#### Gradle
```groovy
dependencies {
implementation group: 'io.github.linpeilie', name: 'mapstruct-plus', version: ${mapstruct-plus.version}
annotationProcessor group: 'io.github.linpeilie', name: 'mapstruct-plus-processor', version: ${mapstruct-plus.version}
}
```
### add configuration class
In the module package where the Bean object resides, add a comment on any class: `@ComponentModelConfig(componentModel = "default")`
eg:
```java
@ComponentModelConfig(componentModel = "default")
public class MapperConfiguration {
}
```
### Specifies the object mapping relationship
Add a annotation - `@AutoMapper` above `User` or `UserDto` and set `targetType` to the opposite class.
eg:
```java
@AutoMapper(target = UserDto.class)
public class User {
// ...
}
```
### Test
```java
public class QuickStart {
private static Converter converter = new Converter();
public static void main(String[] args) {
User user = new User();
user.setUsername("jack");
user.setAge(23);
user.setYoung(false);
UserDto userDto = converter.convert(user, UserDto.class);
System.out.println(userDto); // UserDto{username='jack', age=23, young=false}
assert user.getUsername().equals(userDto.getUsername());
assert user.getAge() == userDto.getAge();
assert user.isYoung() == userDto.isYoung();
User newUser = converter.convert(userDto, User.class);
System.out.println(newUser); // User{username='jack', age=23, young=false}
assert user.getUsername().equals(newUser.getUsername());
assert user.getAge() == newUser.getAge();
assert user.isYoung() == newUser.isYoung();
}
}
```
## SpringBoot Environment
### Add dependencies
Introducing `mapstruct-plus-spring-boot-starter` dependencies:
#### Maven
```xml
latest version
io.github.linpeilie
mapstruct-plus-spring-boot-starter
${mapstruct-plus.version}
org.apache.maven.plugins
maven-compiler-plugin
3.8.1
1.8
1.8
io.github.linpeilie
mapstruct-plus-processor
${mapstruct-plus.version}
```
#### Gradle
```groovy
dependencies {
implementation group: 'io.github.linpeilie', name: 'mapstruct-plus-spring-boot-starter', version: ${mapstruct-plus.version}
annotationProcessor group: 'io.github.linpeilie', name: 'mapstruct-plus-processor', version: ${mapstruct-plus.version}
}
```
### Specifies the object mapping relationship
Same as non-SpringBoot environment
### Test
```java
@SpringBootTest
public class QuickStartTest {
@Autowired
private Converter converter;
@Test
public void test() {
User user = new User();
user.setUsername("jack");
user.setAge(23);
user.setYoung(false);
UserDto userDto = converter.convert(user, UserDto.class);
System.out.println(userDto); // UserDto{username='jack', age=23, young=false}
assert user.getUsername().equals(userDto.getUsername());
assert user.getAge() == userDto.getAge();
assert user.isYoung() == userDto.isYoung();
User newUser = converter.convert(userDto, User.class);
System.out.println(newUser); // User{username='jack', age=23, young=false}
assert user.getUsername().equals(newUser.getUsername());
assert user.getAge() == newUser.getAge();
assert user.isYoung() == newUser.isYoung();
}
}
```
## Solon
:::info
since `1.2.5`
:::
### Add dependencies
Introducing `mapstruct-plu-solon-plugin` dependencies:
> `mapstruct-plus-solon-plugin` has been added to `solon-parent` dependency management, and the latest version can be viewed in [solon-plugins](https://gitee.com/dromara/solon-plugins)
```xml
org.dromara.solon-plugins
mapstruct-plus-solon-plugins
org.apache.maven.plugins
maven-compiler-plugin
3.8.1
${java.version}
${java.version}
io.github.linpeilie
mapstruct-plus-processor
${mapstruct-plus.version}
-Amapstruct.defaultComponentModel=solon
```
### Specifies the object mapping relationship
Same as SpringBoot environment
### Test
```java
@SolonTest(DemoApp.class)
@ExtendWith(SolonJUnit5Extension.class)
public class QuickStartTest {
@Inject
private Converter converter;
@Test
public void test() {
User user = new User();
user.setUsername("jack");
user.setAge(23);
user.setYoung(false);
UserDto userDto = converter.convert(user, UserDto.class);
System.out.println(userDto); // UserDto{username='jack', age=23, young=false}
assert user.getUsername().equals(userDto.getUsername());
assert user.getAge() == userDto.getAge();
assert user.isYoung() == userDto.isYoung();
User newUser = converter.convert(userDto, User.class);
System.out.println(newUser); // User{username='jack', age=23, young=false}
assert user.getUsername().equals(newUser.getUsername());
assert user.getAge() == newUser.getAge();
assert user.isYoung() == newUser.isYoung();
}
}
```
## Summary
With the introduction of dependencies, the steps to using MapStructPlus are very simple.
1. Add an `AutoMapper` annotation to the class you want to convert
2. Get the `Converter` instance and call the convert method.