2017-07-28 86 views
-1

我遇到以下問題。我想創建Spring @Component with generic彈簧4組件注入通用

@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); 
} 
} 

我可以像上面那樣注入這個組件嗎?其實,我已經嘗試過了,它似乎正常工作,請你確認我是否正確?

+0

如果確實有效,那麼應該沒問題吧? – Lino

+0

https://blog.jayway.com/2013/11/03/spring-and-autowiring-of-generic-types/ –

回答

0

首先,春豆不能自己注入。

關於你的問題,是的,它是注射劑,但注射時不使用通用標誌。只需注入它。通用類型是在通用類的方法正在使用時發送的。

例如;

@Component 
public class ResponseDtoValidator<DTO> { 

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

然後;

public class Test { 

    @Autowired // or @Inject 
    private ResponseDtoValidator responseDtoValidator; 

    public void testMethod() { 
     responseDtoValidator.getAbc(List<EnterATypeInHere> aList); 
    } 
} 
+0

請閱讀此文章:https://blog.jayway.com/2013/11/ 03/spring-and-autowiring-generic-types/ –

+0

這與我寫的@IgorOrekhov –

+0

是一樣的哦,我明白你的意思了。但是,當注射時不應該使用通用標誌的原因是什麼?由於泛型類型僅在方法調用中發送,這只是無用的。 –