我想创建一个对象,只要它在数据库中不存在。 在普通的java中我会做类似
的事情MyObject getObject(String id) {
MyObject myObject = myDao.getById(id);
if(myObject == null) {
myObject = new MyObject("Some Parameter");
}
return myObject;
}
我现在想要使用Spring。 我的想法是使用预先注入的工厂。 朝向(但使用构造函数注入)的方向:
@Autowired
MyObjectFactory myObjectFactory;
MyObject getObject(String id) {
MyObject myObject = myDao.getById(id);
if(myObject == null) {
myObject = myObjectFactory.newInstance("Some Parameter");
}
return myObject;
}
但是为了确保我想问一下有哪些选项以及哪种方法更符合Springs DI。
*编辑1 * 修复了自动装配的注释
*编辑2 * Copyinf来自我的一条评论
我必须在getObject方法中使用比此处所示更多的逻辑。
我必须检查不同的唯一键才能找到匹配的对象,并且只有当我找不到具有不同方法的对象时,我才会创建一个新对象。我只是将代码保持为小问题。 这就是为什么我宁愿不使用create if not found方法。
此外,我尝试保持代码可测试并从方法中抽象出对象创建。
答案 0 :(得分:0)
"我想创建一个对象database
时不存在。"
我认为您可以使用存储库检查object
是否id
如果不是 - 然后创建它。
使用repository
使用例如:
@Autowired
private PersonRepository repository;
然后检查元素是否存在使用:
repository.findOne(id);
这种方法有问题吗?
Spring repository:
http://docs.spring.io/spring-data/data-commons/docs/1.6.1.RELEASE/reference/html/repositories.html