使用泛型类型参数自动装配类的特定实例

如果你有一个带有泛型类型参数的接口,那么 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);
    }   
}