我正在转换一个到处使用单身的旧代码库。它有许多辅助类可以使用这些单例。
我试图将其转换为使用DI,但我不确定这个问题的最佳解决方案是什么。辅助类有许多方法,如:
public PropertyValue getProperty(String objId, String propId) {
obj = dao.getObj(objId);
if(obj == null)
return null;
if(some other condition)
log result
return obj.getProperty(propId)
这个例子有点做作,但它有点说明了我的观点。如果对象存在,它将获取值。我不想将此方法添加到DAO中,因为有许多DAO实现,因此需要在很多地方实现。类似于它自己的对象。
我想我可以使用java 8的界面默认设置,但这一切对我来说都是错误的。
有什么想法?
答案 0 :(得分:2)
使用Spring,我会建议像:
@Component
public class Helper {
@Autowired
private IDao dao;
public PropertyValue getProperty(String objId, String propId) {
obj = dao.getObj(objId);
if(obj == null)
return null;
if(some other condition)
log result
return obj.getProperty(propId)
} // getProperty
} // class Helper
并再次使用自动连线将助手注入另一个类:
@Component
public class SomeClass {
@Autowired
private Helper helper;
public void someMethod() {
// ...
PropertyValue v = helper.getProperty(objId, propertyId);
// ...
}
}