java - 如何 Autowiring 泛型类型

标签 java spring

我想在 FcSolrServiceImpl 类中@autowire SolrCrudRepository,但它在 NPE 中给出。以下是我的实现。

FcSolrServiceImpl.java

public class FcSolrServiceImpl<K> {

    @Autowired(required = true)
    SolrCrudRepository<K, String> repository;

    public void saveProduct(K input) {
        repository.save(input);  // Getting null pointer in repository
    }
}

产品.java

@SolrDocument(solrCoreName = "core1")
public class Product {

    Product() {
    };

    @Field
    @Id
    private String id;

    // getter setter hashcode equals toString methods

}

FcIndexSyncApplication.java

@Configuration
@EnableAutoConfiguration
@ComponentScan
public class FcIndexSyncApplication extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(FcIndexSyncApplication.class, args);
        FcSolrServiceImpl<Product> fpsi = new FcSolrServiceImpl<Product>();

        Product input = new Product();
        input.setID("abc");

        fpsi.saveProduct(input);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(FcIndexSyncApplication.class);
    }

    @Bean
    public SolrTemplate solrTemplate() throws Exception {
        HttpSolrServer httpSolrServer = new HttpSolrServer("${spring.data.solr.host}");
        return new SolrTemplate(httpSolrServer, "core1");
    }

}

最佳答案

您正在创建FcSolrServiceImplnewFcSolrServiceImpl<Product> fpsi = new FcSolrServiceImpl<Product>();

这样 Spring 就不知道该对象的任何信息。您必须从 Spring 上下文获取 bean,才能使用依赖注入(inject):

ApplicationContext ctx = SpringApplication.run(FcIndexSyncApplication.class, args);
FcSolrServiceImpl myBean = ctx.getBean(FcSolrServiceImpl.class);
myBean....

关于java - 如何 Autowiring 泛型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35409871/

相关文章:

java - Spring Data Neo4j "No property get found for type"异常

java - Spring AOP 有条件地@DeclareParents

java - 在 for 循环结束之前不将元素逐个添加到 JList

java - 如何在 Netbeans 中将 DocumentListener 与 jTextField 结合使用?

java - 使用吗啡按字符串列表上的元素查询 MongoDB

java - CORS 阻止了 Angular 7 和 Spring 5

spring - Feign Client - 动态授权 header

java - 如何向php服务器发送数据和向android接收数据

java - 具有两个线程的 IllegalMonitorStateException

java - Spring异常: org. springframework.expression.spel.SpelEvaluationException : EL1004E:(pos 8): Method call: Method retrieveRecords(java. util.Vector)