无法实例化Spring bean存储库

时间:2018-03-01 14:02:35

标签: spring mongodb spring-boot model-view-controller javabeans

在此任务中,我不允许使用自动接线

因此我尝试创建与此类似的内容:https://www.tutorialspoint.com/spring/spring_java_based_configuration.htm

我的代码

@Configuration
public class ApplicationConfig {

    @Bean
    public FoodService foodService() {
        return new FoodService(FoodRepository());
    }

    @Bean
    public FoodRepository foodRepository() {
        return new FoodRepository();
    }
}

当然,由于FoodRepository是一个扩展MongoRepository的接口,它给出了一个错误,它没有被实例化,并且在服务中我确实需要调用存储库来保存等等。怎么解决这个问题?

2 个答案:

答案 0 :(得分:1)

我在Spring Data MongoDB documentation

中找到了答案

在ApplicationConfig.java中,我应该做到以下几点:

function f(obj, prop, val){
  if (typeof obj == 'object'){
    if (obj.hasOwnProperty(prop))
      obj[prop] = val;
      
    for (let i in obj)
      f(obj[i], prop, val);
  }
}

var items = {
  price: 10,
  child: {
    price: 20, 
     child: {
       price: 10
     }
  },
  child2: {
    price: 40,
    child: {
      price: 50,
      child: [{ price: 30 }, { price: 40 }]
    }
  }
};

f(items, 'price', 0);

console.log(JSON.stringify(items));

答案 1 :(得分:0)

更新了对行

由于您没有使用Spring标记问题,我假设您使用的是<?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:mongo="http://www.springframework.org/schema/data/mongo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd"> <mongo:mongo id="mongo" /> <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"> <constructor-arg ref="mongo" /> <constructor-arg value="databaseName" /> </bean> <mongo:repositories base-package="com.acme.*.repositories" /> </beans>

根据https://docs.spring.io/spring-data/mongodb/docs/1.2.0.RELEASE/reference/html/mongo.repositories.html你需要:

@Import

我建议创建一个类似的文件,并在ApplicationConfig中包含FoodRepository和.xml文件的引用。

如果您没有向new FoodRepository()界面添加其他方法,则无需实施,因此您无法执行Spring Boot

更新:

由于这是pom.xml应用,您只需要:

将依赖项添加到<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency>

@Configuration

使用@EnableMongoRepositories

注释主类(或spring.data.mongodb.host= spring.data.mongodb.port= spring.data.mongodb.database= - 带注释的类)

配置属性:

{{1}}