我将web和核心项目组合在同一个maven父模块下,如
父 - Web(com.parent.test.web) - Core(com.parent.test.core)
我想在核心项目中引用web模块依赖项来调用web模块中的一些api
Web项目示例,
com.test.parent.web
public interface RestInterface {
public ResponseEntity load();
}
@RestController
public class RestInterfaceImpl implements RestInterface {
@Override
@RequestMapping(value = "/getData", method = RequestMethod.GET, produces = APPLICATION_JSON)
public @ResponseBody ResponseEntity<Object> load() {
}
}
核心项目样本,
com.test.parent.core
@Component
public class CoreImpl implements CoreInterface {
// Is this possible to autowire
@Autowired
private RestInterface restInterface;
public boolean getOptions() {
ResponseEntity<Object> results = restInterface.load();
for (Object o : results) {
//TODO
}
}
}
因为项目是在同一个父pom模块中开发的。所有项目都将分组到springboot jar中,并将部署到同一环境中。因此,我想将Web项目依赖项引用到核心项目中,并尝试扫描核心项目中的Web类。
我想澄清一些事情,
答案 0 :(得分:4)
恕我直言,这绝对不是一个正确的方法。关注点分离原则说控制器应该只是从请求中获取参数的小块代码,将它们传递给业务类,然后转发到将显示结果的视图。
如果你需要从核心类调用控制器的某些方法,这意味着你有一个Fat Ugly Controller,里面有业务方法。正确的方法是分离web部分=&gt;控制器,来自业务部分=&gt;服务层。
这样你就可以创建一个服务bean,它将在(现在很薄的)控制器和需要调用它的方法的其他核心类中自动装配。