[英]Spring - Need to autowire @RestController class in a @Component class
我将Web和核心项目组合在同一个Maven父模块下,
父级-网站(com.parent.test.web)-核心(com.parent.test.core)
我想在核心项目中引用Web模块依赖项,以从Web模块调用一些api
网络项目示例
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类。
我想澄清一些事情,
恕我直言,这绝对不是正确的方法。 关注点分离原则表示,控制器应仅是一小段代码, 它们从请求中获取参数, 将其传递给业务类 ,然后转发至将显示结果的视图。
如果您需要从一个核心类中调用控制器的某些方法,这意味着但您必须拥有一个在其中携带业务方法的Fat Ugly Controller。 正确的方法是将Web部件=>控制器与业务部件=>服务层分开。
这样,您将创建一个服务bean,该服务bean将自动连接到(现在是瘦的)控制器和需要调用其方法的其他核心类中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.