Java 在SpringMVC中使用来自其他项目的类

Java 在SpringMVC中使用来自其他项目的类,java,spring,spring-mvc,web,dependencies,Java,Spring,Spring Mvc,Web,Dependencies,我有一个相当复杂的问题,它不是真正的代码,所以请允许我列出的情况 我有一个web应用程序(SpringMVC),它必须采用一些表单数据,然后在“提交”时必须执行一些功能 问题的一部分是大量的bean定义和奇怪的依赖关系,导致了一个奇怪的项目层次结构。以下是相关模块及其说明的列表: 视图-这是一个Maven&Spring MVC项目,包含我的JSP、控制器和所有重要的基于视图的内容。内置到.war中并部署在服务器中。与这些其他模块没有依赖关系 web-这是一个Maven&Spring MVC项目

我有一个相当复杂的问题,它不是真正的代码,所以请允许我列出的情况

我有一个web应用程序(SpringMVC),它必须采用一些表单数据,然后在“提交”时必须执行一些功能

问题的一部分是大量的bean定义和奇怪的依赖关系,导致了一个奇怪的项目层次结构。以下是相关模块及其说明的列表:

  • 视图-这是一个Maven&Spring MVC项目,包含我的JSP、控制器和所有重要的基于视图的内容。内置到.war中并部署在服务器中。与这些其他模块没有依赖关系
  • web-这是一个Maven&Spring MVC项目,除了充当视图和bean之间的中间人之外,似乎没有什么作用。内置到.war中并部署在服务器中。具有对bean的依赖性
  • bean-基本上只包含要使用的对象和包含“invoke”方法以触发业务功能的类。有业务上的依赖性
  • 业务-这是一个Maven&Spring项目,其中包含我的所有业务逻辑
我曾尝试绕过所有中间人,将业务、bean和web依赖项放入视图中,但这会导致各种bean定义问题。依赖项必须保持原来的状态

因此,我最终需要的是在“我的视图”模块中从web类调用方法

下面是我在视图模块中的一些代码

JSP:

服务:

@Service
public class ServiceImpl implements Service {

@Override
public void execute(Thing input) {

    //This is where I need to call "invoke" from a class in my web module

    System.out.println("Executing...");
}
很抱歉写了一本小说。有人知道在不添加依赖项的情况下访问所需方法的方法吗?请求映射会有帮助吗?任何和所有的帮助都将不胜感激

谢谢



编辑:为了澄清,流程应该是:视图中的“执行”调用web中的“调用”,在bean中调用方法“调用”,在业务中调用方法“调用”

web应用程序通常有一个,其中较低层不应调用其上一层中的代码。这就是你想要做的,这不是一个好主意。你能解释一下你试图调用的方法是做什么的吗?也许有更好的办法,当然。业务执行一个事务。这个模块结构是一个要求,所以很遗憾我不能改变它。流程应该是:视图中的“执行”在web中调用“调用”,在bean中调用方法“调用”,在业务中调用方法“调用”,这些单独的项目是完全独立的吗?比如,您有一个“视图”JAR、“web”JAR、“beans”JAR和一个“业务”JAR?如果是这样的话,只要合适的罐子放在合适的地方,我想一切都会正常的。在我看来,正确的“位置”应该是“WEB”模块中的WEB-INF/libs,因为容器会将其视为一个单元。所以网络有豆罐,豆罐有业务
@Controller
public class Controller {

    @Autowired
    Service service;

    @RequestMapping(value = "/execute", method = RequestMethod.POST)
    public String execute(@ModelAttribute("form")
                        Form form, BindingResult result) {

    String a = transactionForm.getA();
    String b = transactionForm.getB();
    String c = transactionForm.getC();

    Thing thing = new Thing();
    thing.setA(a);
    thing.setB(b);
    thing.setC(c);
    service.execute(thing);
    return "start";
}
}
@Service
public class ServiceImpl implements Service {

@Override
public void execute(Thing input) {

    //This is where I need to call "invoke" from a class in my web module

    System.out.println("Executing...");
}