在Spring MVC AOP项目中,我有两个接口和两个类,超出了Model类,如下所示:
模型类(n.5):
package com.mycompany.myproject.model; //... imports @Entity public class Activity { @NotNull private long id; private String description; public Activity() { } //... getters and setters }
Dao Interface(n.1):
package com.mycompany.myproject.dao; import com.mycompany.myproject.model.Activity; import java.util.Collection; public interface ActivityDao { public Collection<Activity> findAll(); public void delete(Activity activity); public void create(Activity activity); public Activity update(Activity activity); } }
Dao Implementation(n.2):
package com.mycompany.myproject.dao.impl; import com.mycompany.myproject.model.Activity; import com.mycompany.myproject.dao.ActivityDao; import java.util.Collection; // ... other imports @Repository public class ActivityDaoImpl implements ActivityDao { //... Spring autowiring, etc. public Collection<Activity> findAll(){ //... } // other methods implementation }
服务界面(n.3):
package com.mycompany.myproject.service; import com.mycompany.myproject.model.Activity; import java.util.Collection; //... other imports public interface ActivityService { public Collection<Activity> getAllActivities(); // other method statements }
服务类(n.4):
package com.mycompany.myproject.service.impl; import com.mycompany.myproject.model.Activity; import com.mycompany.myproject.dao.ActivityDao; import java.util.Collection; import com.mycompany.myproject.service.ActivityService; // ... other imports @Service @Transactional(readOnly = true) public class ActivityServiceImpl implements ActivityService { @Autowired ActivityDao activityDao; public Collection<Activity> getAllActivities(){ //<=== ERROR! return activityDao.findAll(); } // other methods implementation }
Eclipse的Java语法检查是在Service Class实现(n.4)中使用Collection返回类型的每个方法中的showin错误警告返回类型与Dao的方法返回不兼容。
当接受来自快速修复对话框的建议时,Eclipse将服务的方法类型更改为Collection<com.mycompany.myproject.service.Activity>
,而不是Collection<com.mycompany.myproject.model.Activity>
,这是模型类的正确位置(或者更好Collection<Activity>
因为这是合理的)。
乍一看,似乎Eclipse环境中的java语法cheker对接口的Collection类型和Dao类的Collection感到困惑,当它们不是时,将它作为不同的类型进行威胁。
关于如何解决这个非常烦人的问题,或者我可能做错了什么?非常感谢!
答案 0 :(得分:0)
我已经解决了这个问题。显然Eclipse正在与buildpath中另一个项目的类混淆。强制它通过修复pannel建议更新import语句,它从构建路径中的相关项目中激活了import语句。然后再次编写正确的import语句似乎更新了编译器链接,现在错误不再显示了。