私は MongoDB を学び、同時に Spring フレームワークを使用して単純な REST アプリケーションを作成しようとしています。
私は単純なモデルを持っています:
@Document
public class Permission extends documentBase{
@Indexed(unique = true)
private String name;
public Permission(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
それから私は単純なDAOを持っています:
@Repository
@Transactional
@Profile({"production","repositoryTest","mongoIntegrationTest"})
public class DaoImpl implements DAO {
@Autowired
protected MongoTemplate mongoTemplate;
public <T> T addObject(T object) {
mongoTemplate.insert(object);
return object;
}
統合テストがあります:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:mvc-dispatcher-servlet.xml", classpath:IntegrationContext.xml"},loader = TestXmlContextLoader.class)
@ActiveProfiles("mongoIntegrationTest")
public class RepositoryIntegrationTest extends AccountTestBase{
@Autowired DAO repository;
@Autowired WebApplicationContext wac;
@Test
public void AddPermission() {
Permission permission_1 = new Permission("test");
Permission permission_2 = new Permission("test");
repository.addObject(permission_1);
repository.addObject(permission_2);
}
}
私の構成:
<!-- MongoDB host -->
<mongo:mongo host="${mongo.host.name}" port="${mongo.host.port}"/>
<!-- Template for performing MongoDB operations -->
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"
c:mongo-ref="mongo" c:databaseName="${mongo.db.name}"/>
「permission_2」を追加すると、MongoDB から例外がスローされ、Spring によって変換され、DAO で DataAccessException としてキャッチされることを期待しています。
MongoDb のログ ファイルを見ると、重複した例外がスローされていることがわかりますが、DAO には到達しません。
だから、、私は何か間違ったことをしていると思いますが、、、しかし現時点では、、私は自分の間違いに目がくらんでいます。
//lg