我有以下虚拟类:
@Document("items")
static class Item {
int i;
public Item() {
}
public Item(int i) {
this.i = i;
}
public int getI() {
return i;
}
}
这是一个简单的@Changeset
:
//@Autowired
@ChangeSet(order = "001", id = "add_items", author = "tester")
public void changeset1(MongoTemplate mongoTemplate) {
for (int i = 0; i < NUM_OF_DB_ITEMS; i++) {
mongoTemplate.insert(new Item(i));
}
}
调用后@Changeset
,单元测试正在运行(注意 mongoTemplate 是@Autowired
)
@Test
public void test() {
List<Item> items = mongoTemplate.findAll(Item.class);
System.out.println(items);
}
问题:我从findAll()
我发现当我添加它@Autowired
时changeset1()
确实有效(上面评论过) - 我得到了所有项目。
你能解释一下为什么吗?在示例中,我认为他们不需要@Autowired
我应该这样做吗?我的意思是,它会损坏 Mongock 的锁定机制吗?