Spring DI和创建对象

时间:2016-08-17 08:26:59

标签: java spring dependency-injection

我想创建一个对象,只要它在数据库中不存在。 在普通的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方法。

此外,我尝试保持代码可测试并从方法中抽象出对象创建。

1 个答案:

答案 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