繁体   English   中英

Spring存储库nullpointerexception

[英]Spring Repository nullpointerexception

我正在尝试使用Spring-Boot编写一个非常基本的应用程序。 我目前唯一想做的就是从SQL Server数据库中获取一些信息。

应用程序

@SpringBootApplication(scanBasePackageClasses = { MainView.class, Application.class })
@EnableJpaRepositories(basePackageClasses = CustomerRepository.class)
@EntityScan(basePackageClasses = Customer.class)
public class Application extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

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

Customerrepository.java

@Repository
public interface CustomerRepository extends JpaRepository<Customer, Integer> 
{

}

CustomerController.java

@Controller
@RequestMapping(path = "/customer")
public class CustomerController {

    @Autowired
    private CustomerRepository customerRepository;

    @GetMapping(path = "/all")
    public @ResponseBody Iterable<Customer> getAllCustomers() {
        return customerRepository.findAll();
    }
}

客户视图

@Tag("customers-view")
@HtmlImport("src/views/customers/customers-view.html")
@Route(value = ApplicationConst.PAGE_CUSTOMERS, layout = MainView.class)
@PageTitle(ApplicationConst.TITLE_CUSTOMERS)
public class CustomersView extends PolymerTemplate<TemplateModel> {

    @Autowired
    CustomerRepository customerRepository;

    public CustomersView() {
        customerRepository.findAll();
    }

}

转到http:// localhost:8080 / customer可以很好地返回数据库中的每个客户。

但是,当我尝试在我的CustomerView.java中找到所有客户时,自动装配的CustomerRepository返回一个nullpointerexception。

有人可以指出我正确的方向吗?

尝试使用@Autowire构造函数中的存储库,如下所示:

@Tag("customers-view")
@HtmlImport("src/views/customers/customers-view.html")
@Route(value = ApplicationConst.PAGE_CUSTOMERS, layout = MainView.class)
@PageTitle(ApplicationConst.TITLE_CUSTOMERS)
public class CustomersView extends PolymerTemplate<TemplateModel> {

CustomerRepository customerRepository;

@Autowired
public CustomersView(CustomerRepository customerRepository) {
    this.costumerRepository = customerRepository;
    this.customerRepository.findAll();
}

}

发生这种情况是因为在构造函数完成后会插入所有@autowired属性。 如果要在构造函数时注入@autowired属性,则必须使用上面的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM