java - Spring @Autowired 字段为空?

标签 java spring

为什么我将 Spring @Autowired 字段设置为 null :

Exception : 
    java.lang.NullPointerException
        at com.elastic.controller.MainController.getUsers(MainController.java:38)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

MainController.java

package com.elastic.controller;

        @Component()
        @Path("/user")
        public class MainController {


            @Autowired
            private ElasticSearchRepository elasticSearchRepository;

            @GET
            @Path("/getAllUsers")
            @Produces(MediaType.APPLICATION_JSON)
            public Response getUsers() throws Exception{

                List<User> userlist =new ArrayList<User>();
                Iterator<User> users = elasticSearchRepository.getAllUsers();

                while (users.hasNext()) {
                    userlist.add(users.next());
                }       

                return Response.ok(userlist).build();

            }

        }

ElasticSearchRepository.java

package com.elastic.repository;
@Configuration
@EnableElasticsearchRepositories(basePackages = "com.elastic.repository")
public class ElasticSearchRepository {

public Iterator<User> getAllUsers() {
    Iterator<User> users = userRepository.findAll().iterator();
    return users;
}

}

mvc-dispatcher-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
            <beans xmlns="http://www.springframework.org/schema/beans"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"      
                   xmlns:context="http://www.springframework.org/schema/context"
                   xmlns:elasticsearch="http://www.springframework.org/schema/data/elasticsearch"
                   xsi:schemaLocation="http://www.springframework.org/schema/data/elasticsearch http://www.springframework.org/schema/data/elasticsearch/spring-elasticsearch-1.0.xsd
                    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
                    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd 
                    http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">



                <context:annotation-config />

                <mvc:annotation-driven />
                <context:component-scan base-package="com.elastic" />
                <elasticsearch:repositories base-package="com.elastic.repository" />
                <elasticsearch:repositories base-package="com.elastic.entity" />


            </beans>

对于 Controller ,我保留了@component Annotation,对于存储库,我保留了@Configuration,但仍然遇到此异常。请帮忙解决这个问题。

最佳答案

根据问题陈述,我可以找到两个问题,解决方案如下:

请尝试这个

  1. 请在 ElasticSearchRepository.java 类中尝试使用 @ComponentScan(basePackages = { "com.elastic"})

  2. @Component() 在 MainController.java 类中使用 @Controller 重命名

关于java - Spring @Autowired 字段为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38304477/

相关文章:

java - 配置 libmediainfo 以使用 Java 项目而无需在所有平台 (OS) 上安装

java - 如何确保字符串具有特定格式

Java SE + Apache DeltaSpike : Unsatisfied dependencies for type Repository

java - OJB 引用描述符 1 :0 relationship? 我是否应该将自动检索设置为 false?

android - 如何制作一个 java 对象以从我的 Rails API 接收模型?

java - 如何向 JTabbedPane 添加组件

java - 表达式语言将 "-"符号视为字符串文字而不是减号运算符?

java - 为什么我的 swagger 不能在 java 中使用 springboot?

spring - Grails 或 Spring 方法级事务

java - 由 : java. lang.NoSuchMethodError 引起