我正在玩Spring Boot,我偶然发现了转换器界面。据我所知,使用转换器的主要目的是转换数据类型。
但后来我想知道使用Spring的转换器从数据源中获取一些实例是一个好主意,还是因为它被认为是一个糟糕/良好的实践。
通过这种方式,实体可以被注入"进入控制器的方法并减少代码重复, 如下:
@Entity
class SomeEntity {
@Id
@GeneratedValue
@GenericGenerator(name = "UUID", strategy = "...")
private UUID id;
// more things ...
}
我们有一个转换器:
@Component
class SomeConverter extends Converter<String, SomeEntity> {
@Autowired
SomeEntityRepository repository; // CrudRepository
@Override
public SomeEntity convert(String source) {
// get the entity from the Data Source...
UUID id;
try {
id = UUID.fromString(source);
} catch (IllegalArgumentException e) {
// handle exception
throw e;
}
SomeEntity someEntity = this.repository.findOne(id);
return someEntity;
}
}
然后我有一个控制器:
@RestController
class SomeController {
@GetMapping(path = "/some/{someId}")
public ResponseEntity<SomeEntity> getSome(@PathVariable("someId") SomeEntity some) {
// maybe do something with the Entity...
return new ResponseEntity<>(some, HttpStatus.OK);
}
}
任何想法建议都将深表感谢!在此先感谢:)
(上面的代码仅用于更清晰地显示转换的想法)