繁体   English   中英

Spring-需要在@Component类中自动装配@RestController类

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM