当前位置: 首页 > 知识库问答 >
问题:

如何在spring mvc中实现spring boot@AutoWired来实例化MongoRepository接口?

祁远
2023-03-14

这是给正儿八经的“Springers”们的问题...

我想使用MongoRepository。所以我去了Spring.io网站的MongoDB CRUD操作教程;

第一个问题是他们使用的是Spring Boot。第二个问题是他们在接口上使用@autowired。那个注释似乎可以创建一个对象(以后从这个对象调用方法...)

所以....我使用的是常规的spring MVC,而@autowired似乎在那里不起作用。

package hello;

import java.util.List;

import org.springframework.data.mongodb.repository.MongoRepository;

public interface CustomerRepository extends MongoRepository<Customer, String> {

    public Customer findByFirstName(String firstName);
    public List<Customer> findByLastName(String lastName);

}

包含@autowired的类

package hello;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application implements CommandLineRunner {

    @Autowired
    private CustomerRepository repository;

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

    @Override
    public void run(String... args) throws Exception {

        repository.deleteAll();

        // save a couple of customers
        repository.save(new Customer("Alice", "Smith"));
        repository.save(new Customer("Bob", "Smith"));

        // fetch all customers
        System.out.println("Customers found with findAll():");
        System.out.println("-------------------------------");
        for (Customer customer : repository.findAll()) {
            System.out.println(customer);
        }
        System.out.println();

        // fetch an individual customer
        System.out.println("Customer found with findByFirstName('Alice'):");
        System.out.println("--------------------------------");
        System.out.println(repository.findByFirstName("Alice"));

        System.out.println("Customers found with findByLastName('Smith'):");
        System.out.println("--------------------------------");
        for (Customer customer : repository.findByLastName("Smith")) {
            System.out.println(customer);
        }

    }

}

共有1个答案

闻人冷勋
2023-03-14

您应该使用@repository注释您的repository类,并确保它是由Spring的组件扫描拾取的。然后可以根据需要将其@autowire转换为类。

为了清楚起见,您不“实例化”接口。您声明了对该接口实现的依赖关系(通过@autowired),并且假设Spring数据MongDB位于类路径上,Spring将创建一个运行时实现,并使其作为一个bean可用,以便注入。

 类似资料:
  • 是否有任何在Spring MVC中实现并通过Okta Saml验证的示例Web应用程序代码?在互联网上有关于springboot-okta示例的一切:(我没有找到任何香草Spring MVC(不是引导应用程序)的示例项目。

  • 我正在尝试用EmbeddedMongoDB测试我的spring data mongodb存储库,这些存储库是从MongoRepository扩展的接口。与本教程一样,我希望创建不使用spring应用程序上下文的测试,如果我在存储库类中使用普通mongoTemplate,这是可以实现的。 因此,是否可以通过传递Mongo&MongoTemplate实例,使用提供的实用工具方法来实例化MongoRep

  • 需要一些关于Spring自动装配和范围的帮助。 这是基本的应用程序结构: > CustomHttpClient由我的应用程序中的多个服务使用。每当我使用CustomHttpClient时,我都会通过以下方式自动连接该客户端的实例: 我使用拦截器修改CustomHttpClient中的一些变量,如下所示: 现在,问题来了。如果我按照上述方式设置了所有内容,那么每当我通过拦截器更改CustomHttp

  • 我正在尝试使用@Query注释从Spring Boot MongoRepository执行一个复杂的GeoQuery。以下是我的文档: 我需要我的查询执行以下任务: null

  • 本文向大家介绍springboot开发扩展springmvc实现解析,包括了springboot开发扩展springmvc实现解析的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了springboot开发扩展springmvc实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 可以在Java定义自己配置的springmvc: MyM

  • 问题内容: 如何实现与C#代码等效的Python? 这是一个好主意吗??请在您的答案中举例说明。 问题答案: 正如其他人在这里提到的: 在Python中不需要接口。这是因为Python具有适当的多重继承,还具有鸭式输入法,这意味着 必须 在Java中具有接口的地方,而不必在Python中具有接口。 也就是说,接口还有多种用途。其中一些被Python 2.6中引入的Pythons抽象基类覆盖。如果您