spring 中类型转换器使用案例
时间: 2024-05-09 18:19:54 浏览: 14
类型转换器是Spring中常用的一个功能,它可以将一个字符串类型转换成指定的数据类型。以下是一个使用案例:
假设我们有一个User类,其中有两个属性,一个是id,一个是name。我们需要将一个字符串类型的参数转换成User对象。
```java
public class User {
private int id;
private String name;
// getter and setter methods
}
public class UserController {
@GetMapping("/user")
public String getUser(@RequestParam("id") int id, @RequestParam("name") String name) {
User user = new User();
user.setId(id);
user.setName(name);
// ...
}
}
```
在上面的代码中,我们使用了@RequestParam注解来接收请求参数,但是它只能接收基本数据类型或String类型的参数。如果我们需要将参数转换成User对象,就需要使用类型转换器。
首先,我们需要创建一个自定义的类型转换器,实现Converter接口:
```java
public class StringToUserConverter implements Converter<String, User> {
@Override
public User convert(String source) {
User user = new User();
String[] values = source.split(",");
user.setId(Integer.parseInt(values[0]));
user.setName(values[1]);
return user;
}
}
```
在上面的代码中,我们将传入的字符串以逗号分隔,分别设置到User对象的id和name属性中。
然后,在Spring的配置文件中注册类型转换器:
```xml
<bean class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="com.example.StringToUserConverter"/>
</set>
</property>
</bean>
```
最后,在控制器中使用@ModelAttribute注解将请求参数转换成User对象:
```java
public class UserController {
@GetMapping("/user")
public String getUser(@ModelAttribute("user") User user) {
// ...
}
}
```
在上面的代码中,@ModelAttribute注解将请求参数转换成User对象,并将其设置到方法参数中的User对象中。
这样,我们就可以使用类型转换器将请求参数转换成指定的数据类型。