Spring - 需要在@Component类

时间:2016-08-05 11:20:46

标签: java spring maven

我将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类。

我想澄清一些事情,

  • 这是好方法吗?
  • 如果这是一个好方法,我们如何实施?
  • 如果没有,那么什么是正确的方法?

1 个答案:

答案 0 :(得分:4)

恕我直言,这绝对不是一个正确的方法。关注点分离原则说控制器应该只是从请求中获取参数的小块代码,将它们传递给业务类,然后转发到将显示结果的视图。

如果你需要从核心类调用控制器的某些方法,这意味着你有一个Fat Ugly Controller,里面有业务方法。正确的方法是分离web部分=&gt;控制器,来自业务部分=&gt;服务层。

这样你就可以创建一个服务bean,它将在(现在很薄的)控制器和需要调用它的方法的其他核心类中自动装配。