Spring 4组件注入通用

时间:2017-07-28 12:29:42

标签: java spring generics autowired inject

我遇到过以下问题。我想用通用

创建Spring @Component
@Component
public class ResponseDtoValidator<DTO> {

public ResponseEntity<DTO> methodToInvoke(DTO dto) {
return Optional.ofNullable(dto).map(result -> new >ResponseEntity<>
(result, HttpStatus.OK))
.orElse(new ResponseEntity<>(HttpStatus.NOT_FOUND)); }
}

@Controller
public class SomeController {
@Inject
private ResponseDtoValidator<DTO1> responseDtoValidator1;

@Inject
private ResponseDtoValidator<DTO2> responseDtoValidator2;

public void someMethod() {
DTO1 dto1 = new DTO1();
DTO2 dto2 = new DTO2();
responseDtoValidator1.methodToInvoke(dto1);
responseDtoValidator2.methodToInvoke(dto2);
}
}

我可以像上面一样注入这个组件吗?实际上,我已经尝试了,它似乎工作正常,你能否确认我是否正确?

1 个答案:

答案 0 :(得分:0)

首先,弹簧豆本身不能注射。

关于你的问题,是的,它是可注射的,但在注射时不要使用通用标志。只需正常注射它。当泛型类的方法正在使用时,发送泛型类型。

例如;

List

然后;

@Component 
public class ResponseDtoValidator<DTO> {

    public void getAbc(List<DTO> aList) {}
}