首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >春季MongoRepository为零

春季MongoRepository为零
EN

Stack Overflow用户
提问于 2014-08-18 10:28:27
回答 1查看 2.6K关注 0票数 1

下面的代码试图使用将POJO对象(Actor)保存到MongoDB中,但是存储库对象始终是Null。我跟随了多个例子,但主要是这一个

POJO类:

代码语言:javascript
复制
@Document(collection = "actors")
public class Actor 
{
  @Id
  private String id;
  ...
  //constructor
  //setters & getters
}

存放处:

代码语言:javascript
复制
public interface ActorRepository extends MongoRepository<Actor, String> 
{
  public Actor findByFNameAndLName(String fName, String lName);
  public Actor findByFName (String fName);
  public Actor findByLName(String lName);
}

使用存储库的服务:

代码语言:javascript
复制
@Service
public class ActorService 
{
  @Autowired
  private ActorRepository actorRepository;

  public Actor insert(Actor a)
  {
    a.setId(null);
    return actorRepository.save(a);
  }
} 

我从REST控制器类访问服务:

代码语言:javascript
复制
@RestController
public class Controllers 
{

  private static final Logger logger = Logger.getLogger(Controllers.class);
  private static final ApplicationContext ctx = new  AnnotationConfigApplicationContext(SpringMongoConfig.class);

  private ActorService actorService = new ActorService();

  @RequestMapping(value="/createActor", method=RequestMethod.POST)
  public @ResponseBody String createActor(@RequestParam(value = "fName") String fName,
        @RequestParam(value = "lName") String lName,
        @RequestParam(value = "role") String role)
  {
    return actorService.insert(new Actor(null,fName,lName,role)).toString();

  }

 ...
}

我得到的错误是来自这一行的NullPointerException:ActorService.insert()方法中的return actorRepository.save(a);

知道为什么会这样吗?

编辑:这里是Spring配置

代码语言:javascript
复制
@Configuration
public class SpringMongoConfig extends AbstractMongoConfiguration
{ 
    @Bean
    public GridFsTemplate gridFsTemplate() throws Exception 
    {
        return new GridFsTemplate(mongoDbFactory(), mappingMongoConverter());
    }

    @Override
    protected String getDatabaseName() 
    {
        return "SEaaS";
    }

    @Override
    @Bean
    public Mongo mongo() throws Exception 
    {
        return new MongoClient("localhost" , 27017 );
    }

    public @Bean MongoTemplate mongoTemplate() throws Exception 
    {
        return new MongoTemplate(mongo(), getDatabaseName());
    }    
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-18 10:31:28

问题是,您没有使用Spring获取ActorService依赖关系-instead,而是使用

private ActorService actorService = new ActorService();

为了将ActorService依赖注入控制器,下面的代码是最简单的修正。

代码语言:javascript
复制
@RestController
public class Controllers 
{

  private static final Logger logger = Logger.getLogger(Controllers.class);
  private static final ApplicationContext ctx = new  AnnotationConfigApplicationContext(SpringMongoConfig.class);

  @Autowired 
  private ActorService actorService;

  @RequestMapping(value="/createActor", method=RequestMethod.POST)
  public @ResponseBody String createActor(@RequestParam(value = "fName") String fName,
        @RequestParam(value = "lName") String lName,
        @RequestParam(value = "role") String role)
  {
    return actorService.insert(new Actor(null,fName,lName,role)).toString();

  }

 ...
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25361161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档