使用泛型型別引數自動裝配類的特定例項
如果你有一個帶有泛型型別引數的介面,那麼 Spring 可以使用它來自動實現實現你指定的型別引數的實現。
介面:
public interface GenericValidator<T> {
public T validate(T object);
}
Foo Validator 類:
@Component
public class FooValidator implements GenericValidator<Foo> {
@Override
public Foo validate(Foo foo) {
//Logic here to validate foo objects.
}
}
Bar Validator 類:
@Component
public class BarValidator implements GenericValidator<Bar> {
@Override
public Bar validate(Bar bar) {
//Bar validation logic here
}
}
你現在可以使用型別引數自動裝配這些驗證器,以確定要自動裝配的例項。
介面:
public interface FooService {
public void handleFoo(Foo foo);
}
類:
@Service
public class FooServiceImpl implements FooService {
/** Autowire Foo Validator **/
@Autowired
private GenericValidator<Foo> fooValidator;
@Override
public void handleFoo(Foo foo) {
foo = fooValidator.validate(foo);
}
}