在Spring中初始化应用程序后,CrudRepository为null

时间:2012-02-08 23:15:26

标签: mongodb spring-mvc repository autowired

这是mongo-config.xml的一部分:

<mongo:repositories base-package="com.padmenu.web.repositories"
    mongo-template-ref="mongoTemplate" query-lookup-strategy="create-if-not-       found">
    <mongo:repository id="userRepository" />
    <mongo:repository id="categoryRepository" />
</mongo:repositories>

和applicationContext.xml:

<context:annotation-config />
<context:component-scan base-package="com.padmenu" />
<mvc:annotation-driven />
<import resource="mongo-config.xml" />

我的CategoryRepository是

@Repository
public interface CategoryRepository extends CrudRepository<Category, Long> {

}

我的CategoryBean是

public class CategoryBean implements Serializable {

@Autowired
CategoryRepository categoryRepository;

在CategoryBean的PostConstruct中

@PostConstruct
public void init() {
    selectedCategory = new Category();
    categoryList = (List<Category>) categoryRepository.findAll();
    deleteCategoryList = new ArrayList<Category>();
    userLocaleList = new ArrayList<Locale>();
    userLocaleList.add(new Locale("tr"));
    userLocaleList.add(new Locale("en"));
    isForUpdate = false;
}

这里categoryRepository为null。是什么原因?为什么自动接线不起作用?

2 个答案:

答案 0 :(得分:1)

我很高兴你让它运作起来。

为了防止它有所帮助,几个月前我做了一个spring / mongodb例子。我的例子详情如下:

http://www.littlelostmanuals.com/2011/09/spring-mongodb-type-safe-queries.html

代码https://github.com/cjharris5/spring-mongodb-querydsl

答案 1 :(得分:0)

添加 @Controller到公共类的CategoryBean实现了Serializable解决了这个问题。