首页 > 解决方案 > Spring:如何 @Autowire 一个类

问题描述

我正在创建一个片段存储库,我想注入一个Class<T>,但这似乎是不可能的。是吗?

public interface MongoRepositoryExtension<T, ID> {

    List<T> findAll(Query query, Class<T> entityClass);

    List<T> findAll(Query query, Class<T> entityClass, String collectionName);

    UpdateResult upsert(Query query, Update update, Class<?> entityClass);

    UpdateResult upsert(Query query, Update update, String collectionName);

    UpdateResult upsert(Query query, Update update, Class<?> entityClass, String collectionName);

}

@Repository
public class MongoRepositoryExtensionImpl<T, ID> implements MongoRepositoryExtension<T, ID> {

    @Autowired
    private Class<T> entityClass; // Error

    @Autowired
    private MongoTemplate mongoTemplate;

    @Override
    public List<T> findAll(Query query) {
        return mongoTemplate.find(query, entityClass);
    }

    @Override
    public List<T> findAll(Query query, String collectionName) {
        return mongoTemplate.find(query, entityClass, collectionName);
    }

    @Override
    public UpdateResult upsert(Query query, Update update) {
        return mongoTemplate.upsert(query, update, entityClass);
    }

    @Override
    public UpdateResult upsert(Query query, Update update, String collectionName) {
        return mongoTemplate.upsert(query, update, collectionName);
    }

    @Override
    public UpdateResult upsert(Query query, Update update, Class<?> entityClass, String collectionName) {
        return mongoTemplate.upsert(query, update, entityClass, collectionName);
    }

}

我们如何实现这一目标?

标签: javaspring-data

解决方案


推荐阅读